Files
homelab/hedgedoc/compose.yml

106 lines
5.1 KiB
YAML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
services:
hedgedoc-db:
image: postgres:16-alpine@sha256:57c72fd2a128e416c7fcc499958864df5301e940bca0a56f58fddf30ffc07777
environment:
- POSTGRES_USER=$POSTGRES_USER
- POSTGRES_PASSWORD=$POSTGRES_PASSWORD
- POSTGRES_DB=$POSTGRES_DB
container_name: hedgedoc_db
restart: unless-stopped
labels:
- "xiteng.site.component.hedgedoc-db.enabled=true"
- "xiteng.site.component.hedgedoc-db.name=HedgeDoc PostgreSQL"
- "xiteng.site.component.hedgedoc-db.description=保存笔记、修订记录、会话与权限元数据。"
- "xiteng.site.component.hedgedoc-db.section=infrastructure"
- "xiteng.site.component.hedgedoc-db.category=数据层"
- "xiteng.site.component.hedgedoc-db.access=internal"
- "xiteng.site.component.hedgedoc-db.access-label=仅容器网络"
- "xiteng.site.component.hedgedoc-db.icon=PG"
- "xiteng.site.component.hedgedoc-db.icon-url=https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/postgresql.svg"
- "xiteng.site.component.hedgedoc-db.accent=blue"
- "xiteng.site.component.hedgedoc-db.order=540"
volumes:
- ./data:/var/lib/postgresql/data
networks:
- homelab_net
hedgedoc:
image: quay.io/hedgedoc/hedgedoc:1.11.1
container_name: hedgedoc
restart: unless-stopped
environment:
- CMD_DB_HOST=hedgedoc_db
- CMD_DB_PORT=5432
- CMD_DB_DATABASE=$POSTGRES_DB
- CMD_DB_USERNAME=$POSTGRES_USER
- CMD_DB_PASSWORD=$POSTGRES_PASSWORD
- CMD_DB_DIALECT=postgres
- CMD_DOMAIN=notes.xiteng.site
- CMD_URL_ADDPORT=false
- CMD_ALLOW_ORIGIN=localhost,notes.xiteng.site
- CMD_PROTOCOL_USESSL=true
- CMD_OAUTH2_PROVIDERNAME=Authentik
- CMD_OAUTH2_CLIENT_ID=hedgedoc-280baa8d
- CMD_OAUTH2_CLIENT_SECRET=0630f01b111d4ad68ff9b2d174028994decb5b55b51a4556bda24768d11b4586
- CMD_OAUTH2_AUTHORIZATION_URL=https://auth.xiteng.site/application/o/authorize/
- CMD_OAUTH2_TOKEN_URL=https://auth.xiteng.site/application/o/token/
- CMD_OAUTH2_USER_PROFILE_URL=https://auth.xiteng.site/application/o/userinfo/
- CMD_OAUTH2_SCOPE=openid profile email
- CMD_OAUTH2_ISSUER=https://auth.xiteng.site/application/o/hedgedoc/
- CMD_OAUTH2_USER_PROFILE_USERNAME_ATTR=preferred_username
- CMD_OAUTH2_USER_PROFILE_DISPLAY_NAME_ATTR=name
- CMD_OAUTH2_USER_PROFILE_EMAIL_ATTR=email
volumes:
- ./uploads:/hedgedoc/public/uploads
- ./custom/index-body.ejs:/hedgedoc/public/views/index/body.ejs:ro
depends_on:
- hedgedoc-db
ports:
- "3000:3000"
labels:
# --- 1. Traefik 路由设置 ---
- "traefik.enable=true"
- "traefik.http.routers.hedgedoc.rule=Host(`notes.xiteng.site`)"
- "traefik.http.services.hedgedoc.loadbalancer.server.port=3000"
# 强制使用 websecure (443端口) 入口
- "traefik.http.routers.hedgedoc.entrypoints=websecure"
# --- HTTP 入口(来自 cloudflared tunnel---
- "traefik.http.routers.hedgedoc-http.rule=Host(`notes.xiteng.site`)"
- "traefik.http.routers.hedgedoc-http.service=hedgedoc"
- "traefik.http.routers.hedgedoc-http.entrypoints=web"
# --- 中间件:强制 X-Forwarded-ProtoCloudflare Tunnel 用 HTTP 连 Traefik,但用户端是 HTTPS---
- "traefik.http.middlewares.force-https.headers.customrequestheaders.X-Forwarded-Proto=https"
- "traefik.http.routers.hedgedoc-http.middlewares=force-https"
- "traefik.http.routers.hedgedoc.middlewares=force-https"
# --- 新增:开启 TLS 并指定解析器 ---
- "traefik.http.routers.hedgedoc.tls=true"
- "traefik.http.routers.hedgedoc.tls.certresolver=cfresolver"
- "xiteng.site.cache.hedgedoc.enabled=true"
- "xiteng.site.cache.hedgedoc.routers=hedgedoc,hedgedoc-http"
- "xiteng.site.cache.hedgedoc.paths=/assets/,/static/"
- "xiteng.site.cache.hedgedoc.edge-ttl=604800"
- "xiteng.site.cache.hedgedoc.stale-while-revalidate=86400"
# --- Xiteng Site dynamic catalog ---
- "xiteng.site.component.hedgedoc.enabled=true"
- "xiteng.site.component.hedgedoc.name=HedgeDoc"
- "xiteng.site.component.hedgedoc.description=实时 Markdown 协作、分享与技术笔记。"
- "xiteng.site.component.hedgedoc.section=services"
- "xiteng.site.component.hedgedoc.category=开发与协作"
- "xiteng.site.component.hedgedoc.url=https://notes.xiteng.site"
- "xiteng.site.component.hedgedoc.access=mixed"
- "xiteng.site.component.hedgedoc.access-label=公开入口 · 内容按笔记授权"
- "xiteng.site.component.hedgedoc.icon=HD"
- "xiteng.site.component.hedgedoc.icon-url=https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/hedgedoc.svg"
- "xiteng.site.component.hedgedoc.accent=yellow"
- "xiteng.site.component.hedgedoc.order=110"
- "xiteng.site.component.hedgedoc.navigation=new-tab"
- "xiteng.site.component.hedgedoc.portal-link=native"
- "xiteng.site.component.hedgedoc.monitor.enabled=true"
- "xiteng.site.component.hedgedoc.monitor.url=http://hedgedoc:3000"
networks:
- homelab_net
networks:
homelab_net:
external: true