Setup Homepage
Overview
A modern, fully static, fast, secure fully proxied, highly customizable application dashboard with integrations for over 100 services and translations into multiple languages. Easily configured via YAML files or through docker label discovery.
Changelog
2025-01-26
- Changed
docker-compose.ymland.env-sampleto support using tailsacale as the main network. - Added
appdata/ts-homepage/config/homepage.jsonto documentation and allowing it to sync into git. - Verified functionality and is working properly.
Important Tailscale File
homepage.json
{
"TCP": {
"443": {
"HTTPS": true
}
},
"Web": {
"${TS_CERT_DOMAIN}:443": {
"Handlers": {
"/": {
"Proxy": "http://home:3000"
}
}
}
},
"AllowFunnel": {
"${TS_CERT_DOMAIN}:443": false
}
}
Important Docker Files
.env file
.env
NAME=homepage
TZ=America/New_York
ID=1000
DOMAIN=
APPDATA=
SUB=home
PORT=3000
AUTHKEY=
docker-compose.yml file
docker-compose.yml
services:
ts-homepage:
image: tailscale/tailscale
container_name: ts-${NAME}
hostname: ${SUB}
restart: always
networks:
- main
- internal
environment:
TS_AUTHKEY: ${AUTHKEY}
TS_ACCEPT_DNS: true
TS_EXTRA_ARGS: --advertise-tags=tag:${NAME}
TS_SERVE_CONFIG: /config/${NAME}.json
TS_STATE_DIR: /var/lib/tailscale
TS_USERSPACE: false
devices:
- /dev/net/tun:/dev/net/tun
cap_add:
- net_admin
volumes:
- ${APPDATA}/ts-${NAME}/state:/var/lib/tailscale
- ${APPDATA}/ts-${NAME}/config:/config
labels:
com.centurylinklabs.watchtower.enable: true
homepage:
image: ghcr.io/gethomepage/homepage:main
container_name: ${NAME}
restart: always
network_mode: service:ts-${NAME}
volumes:
- ${APPDATA}/${NAME}/config:/app/config
- ${APPDATA}/${NAME}/icons:/app/public/icons
environment:
PUID: ${ID}
PGID: ${ID}
labels:
com.centurylinklabs.watchtower.enable: true
homepage-socket-proxy:
image: lscr.io/linuxserver/socket-proxy
container_name: ${NAME}-socket-proxy
restart: unless-stopped
networks:
- internal
read_only: true
tmpfs:
- /run
environment:
CONTAINERS: 1
SERVICES: 1
TASKS: 1
POST: 0
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
labels:
com.centurylinklabs.watchtower.enable: true
networks:
main:
external: true
internal:
external: true
Start the Container
Start the Container
docker compose up -d