feat: Add environment configuration and update Caddy setup for DuckDNS
This commit is contained in:
8
homelab/.env.example
Normal file
8
homelab/.env.example
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
VAULT_DOMAIN=vault.example.com
|
||||||
|
AUTH_DOMAIN=auth.example.com
|
||||||
|
STORAGE_DOMAIN=storage.example.com
|
||||||
|
EMAIL=mail@example.com
|
||||||
|
APP_KEY=32characterslongrandomstring!
|
||||||
|
NC_ADMIN_USER=admin
|
||||||
|
NC_ADMIN_PASS=changeme
|
||||||
|
DUCKDNS_TOKEN=TOKEN
|
||||||
@@ -1,18 +1,21 @@
|
|||||||
|
# ===========================
|
||||||
|
# DuckDNS
|
||||||
|
# ===========================
|
||||||
|
(dns_duck) {
|
||||||
|
tls {
|
||||||
|
dns duckdns {env.DUCKDNS_TOKEN}
|
||||||
|
}
|
||||||
|
log {
|
||||||
|
output file {env.LOG_FILE}
|
||||||
|
format console
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# ===========================
|
# ===========================
|
||||||
# Vaultwarden
|
# Vaultwarden
|
||||||
# ===========================
|
# ===========================
|
||||||
{$VAULT_DOMAIN} {
|
{$VAULT_DOMAIN} {
|
||||||
log {
|
import dns_duck
|
||||||
level INFO
|
|
||||||
output file {$LOG_FILE} {
|
|
||||||
roll_size 10MB
|
|
||||||
roll_keep 10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tls {
|
|
||||||
dns duckdns {$DUCKDNS_TOKEN}
|
|
||||||
}
|
|
||||||
|
|
||||||
encode zstd gzip
|
encode zstd gzip
|
||||||
|
|
||||||
@@ -23,17 +26,7 @@
|
|||||||
# 2FAuth
|
# 2FAuth
|
||||||
# ===========================
|
# ===========================
|
||||||
{$AUTH_DOMAIN} {
|
{$AUTH_DOMAIN} {
|
||||||
log {
|
import dns_duck
|
||||||
level INFO
|
|
||||||
output file {$LOG_FILE} {
|
|
||||||
roll_size 10MB
|
|
||||||
roll_keep 10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tls {
|
|
||||||
dns duckdns {$DUCKDNS_TOKEN}
|
|
||||||
}
|
|
||||||
|
|
||||||
encode zstd gzip
|
encode zstd gzip
|
||||||
|
|
||||||
@@ -44,21 +37,10 @@
|
|||||||
# Nextcloud
|
# Nextcloud
|
||||||
# ===========================
|
# ===========================
|
||||||
{$STORAGE_DOMAIN} {
|
{$STORAGE_DOMAIN} {
|
||||||
log {
|
import dns_duck
|
||||||
level INFO
|
|
||||||
output file {$LOG_FILE} {
|
|
||||||
roll_size 10MB
|
|
||||||
roll_keep 10
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
tls {
|
|
||||||
dns duckdns {$DUCKDNS_TOKEN}
|
|
||||||
}
|
|
||||||
|
|
||||||
encode zstd gzip
|
encode zstd gzip
|
||||||
|
|
||||||
|
|
||||||
reverse_proxy nextcloud:80
|
reverse_proxy nextcloud:80
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
9
homelab/Dockerfile
Normal file
9
homelab/Dockerfile
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Build Caddy with DuckDNS DNS provider
|
||||||
|
FROM caddy:latest-builder AS builder
|
||||||
|
|
||||||
|
RUN xcaddy build \
|
||||||
|
--with github.com/caddy-dns/duckdns
|
||||||
|
|
||||||
|
FROM caddy:latest
|
||||||
|
|
||||||
|
COPY --from=builder /usr/bin/caddy /usr/bin/caddy
|
||||||
@@ -9,7 +9,7 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./services/vaultwarden:/data
|
- ./services/vaultwarden:/data
|
||||||
environment:
|
environment:
|
||||||
DOMAIN: "https://vault.example.com" # Change to yours
|
DOMAIN: "https://${VAULT_DOMAIN}"
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# 2FAuth (2FA manager)
|
# 2FAuth (2FA manager)
|
||||||
@@ -21,19 +21,17 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./services/2fauth:/data
|
- ./services/2fauth:/data
|
||||||
environment:
|
environment:
|
||||||
- APP_NAME=2FAuth
|
APP_NAME: 2FAuth
|
||||||
- APP_ENV=production
|
APP_ENV: production
|
||||||
- APP_DEBUG=false
|
APP_DEBUG: false
|
||||||
- APP_TIMEZONE=Europe/Helsinki
|
APP_TIMEZONE: UTC
|
||||||
- SITE_OWNER=admin@example.com # Change to yours
|
SITE_OWNER: ${EMAIL}
|
||||||
- APP_KEY=SomeRandomStringOf32CharsExactly # Change to yours
|
APP_KEY: ${APP_KEY}
|
||||||
- APP_URL=https://auth.example.com # Change to yours
|
APP_URL: "https://${AUTH_DOMAIN}"
|
||||||
- ASSET_URL=https://auth.example.com # Change to yours
|
ASSET_URL: "https://${AUTH_DOMAIN}"
|
||||||
- TRUSTED_PROXIES=*
|
TRUSTED_PROXIES: '*'
|
||||||
- LOG_CHANNEL=daily
|
LOG_CHANNEL: daily
|
||||||
- LOG_LEVEL=notice
|
LOG_LEVEL: notice
|
||||||
networks:
|
|
||||||
- default
|
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Nextcloud (Personal cloud / NAS)
|
# Nextcloud (Personal cloud / NAS)
|
||||||
@@ -45,16 +43,16 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
- ./services/nextcloud:/var/www/html
|
- ./services/nextcloud:/var/www/html
|
||||||
environment:
|
environment:
|
||||||
- NEXTCLOUD_ADMIN_USER=admin # Change to yours
|
NEXTCLOUD_ADMIN_USER: ${NC_ADMIN_USER}
|
||||||
- NEXTCLOUD_ADMIN_PASSWORD=changeme # Change to a strong password
|
NEXTCLOUD_ADMIN_PASSWORD: ${NC_ADMIN_PASS}
|
||||||
networks:
|
|
||||||
- default
|
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Caddy (Reverse proxy)
|
# Caddy (Reverse proxy)
|
||||||
# ==========================
|
# ==========================
|
||||||
caddy:
|
caddy:
|
||||||
image: caddy:2
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
container_name: caddy
|
container_name: caddy
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
@@ -67,13 +65,12 @@ services:
|
|||||||
- ./caddy-config:/config
|
- ./caddy-config:/config
|
||||||
- ./caddy-data:/data
|
- ./caddy-data:/data
|
||||||
environment:
|
environment:
|
||||||
# For Caddy: hostnames only, no https://
|
VAULT_DOMAIN: ${VAULT_DOMAIN}
|
||||||
VAULT_DOMAIN: "vault.example.com" # Change to yours
|
AUTH_DOMAIN: ${AUTH_DOMAIN}
|
||||||
AUTH_DOMAIN: "auth.example.com" # Change to yours
|
STORAGE_DOMAIN: ${STORAGE_DOMAIN}
|
||||||
STORAGE_DOMAIN: "storage.example.com" # Change to yours
|
EMAIL: ${EMAIL}
|
||||||
EMAIL: "admin@example.com" # Change to yours
|
DUCKDNS_TOKEN: ${DUCKDNS_TOKEN}
|
||||||
DUCKDNS_TOKEN: "TOKEN" # Change to yours
|
LOG_FILE: /data/access.log
|
||||||
LOG_FILE: "/data/access.log"
|
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Portainer (Docker manager)
|
# Portainer (Docker manager)
|
||||||
@@ -133,7 +130,3 @@ services:
|
|||||||
- /proc:/host/proc:ro
|
- /proc:/host/proc:ro
|
||||||
- /sys:/host/sys:ro
|
- /sys:/host/sys:ro
|
||||||
|
|
||||||
networks:
|
|
||||||
default:
|
|
||||||
driver: bridge
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user