From 62c01cf33d2697787ce47c8b67a767b50570aae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Loureiro?= Date: Fri, 13 Feb 2026 23:48:17 -0300 Subject: [PATCH] first commit --- .gitignore | 3 +++ README.md | 42 ++++++++++++++++++++++++++++++++++++++++++ docker-compose.yaml | 37 +++++++++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 docker-compose.yaml diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0d4edc5 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.env +*.log +.env* diff --git a/README.md b/README.md new file mode 100644 index 0000000..e859088 --- /dev/null +++ b/README.md @@ -0,0 +1,42 @@ +# Homepage + +A modern, secure, highly customizable application dashboard. + +## 📋 Configuration Notes + +### **Environment Variables** +The following environment variables are used in the configuration: + +```bash +PUID +PGID +TZ +HOMEPAGE_ALLOWED_HOSTS +``` + +### **Setup Details** +- **Domain**: configured in `docker-compose.yaml` (uses `${DOMAIN}` variable) +- **Port**: `3000` (container internal) +- **Volumes**: + - `/srv/homelab/volumes/homepage/config` + - `/var/run/docker.sock` (read-only, for Docker integration) +- **Networks**: `proxy` (external) + +### **Important URLs** +- **Dashboard**: `https://homepage.${DOMAIN}` + +### **Customizations** +- **Reverse Proxy**: Traefik with Cloudflare DNS challenge for SSL. +- **Docker Integration**: Access to Docker socket for container monitoring. +- **Allowed Hosts**: Restricted to `${DOMAIN}` via environment variable. + +## 🚀 Deployment + +Deployed via Docker Compose / Portainer. + +## 🔧 Service Details + +- **Container**: `homepage` +- **Image**: `ghcr.io/gethomepage/homepage:latest` +- **Health Check**: Native application health monitoring (wget) +- **Logging**: JSON format, 10MB rotation diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..3ff5a6a --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,37 @@ +services: + homepage: + image: ghcr.io/gethomepage/homepage:latest + container_name: homepage + restart: unless-stopped + networks: + - proxy + volumes: + - /srv/homelab/volumes/homepage/config:/app/config + - /var/run/docker.sock:/var/run/docker.sock:ro + environment: + - PUID=1000 + - PGID=1000 + - TZ=America/Sao_Paulo + - HOMEPAGE_ALLOWED_HOSTS=${DOMAIN} + labels: + - "traefik.enable=true" + - "traefik.http.routers.homepage.rule=Host(`homepage.${DOMAIN}`)" + - "traefik.http.routers.homepage.entrypoints=websecure" + - "traefik.http.routers.homepage.tls.certresolver=cloudflare" + - "traefik.http.routers.homepage.tls=true" + - "traefik.docker.network=proxy" + - "traefik.http.services.homepage.loadbalancer.server.port=3000" + healthcheck: + test: [ "CMD", "wget", "--spider", "-q", "http://localhost:3000" ] + interval: 30s + timeout: 10s + retries: 3 + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +networks: + proxy: + external: true