diff --git a/.gitignore b/.gitignore index fb3895e..37776ce 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,20 @@ .env +imy/ +traefik/compose.yaml.old +vaultwarden/.vaultwarden-data-cp/ +websites/* websites/slajm vaultwarden/.vaultwarden-data/ crafty/docker/ todo certs/ traefik/config/ +matrix/matrix-synapse/*.signing.key +matrix/matrix-synapse/.env +matrix/matrix-synapse/*.log +matrix/matrix-synapse/*.log.config +matrix/matrix-synapse/media_store/ +matrix/matrix-synapse/*.db +matrix/matrix-synapse/*.db-shm +matrix/matrix-synapse/*.db-wal +matrix/matrix-synapse/*.pid diff --git a/crafty/compose.yaml b/crafty/compose.yaml index 5de05ef..8d59fe0 100644 --- a/crafty/compose.yaml +++ b/crafty/compose.yaml @@ -4,7 +4,7 @@ services: crafty: container_name: crafty_container image: registry.gitlab.com/crafty-controller/crafty-4:latest - restart: always + restart: unless-stopped environment: - TZ=Etc/UTC ports: diff --git a/ddns/compose.yaml b/ddns/compose.yaml index 61abafa..c56aac0 100644 --- a/ddns/compose.yaml +++ b/ddns/compose.yaml @@ -60,13 +60,65 @@ services: restart: always - - ddns-sajm: + ddns-matrix: image: oznu/cloudflare-ddns:latest - container_name: ddns-sajm + container_name: ddns-matrix environment: - - API_KEY=${SAJM_API_KEY} - - ZONE=${DOMAIN_MOM} + - API_KEY=${API_KEY} + - ZONE=${DOMAIN} + - SUBDOMAIN=matrix + - PROXIED=false + restart: always + ddns-turn: + image: oznu/cloudflare-ddns:latest + container_name: ddns-turn + environment: + - API_KEY=${API_KEY} + - ZONE=${DOMAIN} + - SUBDOMAIN=turn + - PROXIED=false + restart: always + ddns-temp-site: + image: oznu/cloudflare-ddns:latest + container_name: ddns-temp-site + environment: + - API_KEY=${API_KEY} + - ZONE=${DOMAIN} + - SUBDOMAIN=temp-link - PROXIED=true restart: always - + ddns-testapp: + image: oznu/cloudflare-ddns:latest + container_name: ddns-testapp + environment: + - API_KEY=${API_KEY} + - ZONE=${DOMAIN} + - SUBDOMAIN=testapp + - PROXIED=false + restart: always + ddns-imy-site: + image: oznu/cloudflare-ddns:latest + container_name: ddns-imy-site + environment: + - API_KEY=${IMY_KEY} + - ZONE=${IMYDOMAIN} + - PROXIED=true + restart: always + ddns-kupitri-site: + image: oznu/cloudflare-ddns:latest + container_name: ddns-kupitri-site + environment: + - API_KEY=${KUPITRI_KEY} + - ZONE=${KUPITRI} + - PROXIED=false + restart: always + ddns-etfo: + image: oznu/cloudflare-ddns:latest + container_name: ddns-etfo + environment: + - API_KEY=${API_KEY} + - ZONE=${DOMAIN} + - SUBDOMAIN=etf-oglasi + - PROXIED=false + restart: always + diff --git a/gitea/compose.yaml b/gitea/compose.yaml index f20d0f1..431266f 100644 --- a/gitea/compose.yaml +++ b/gitea/compose.yaml @@ -1,7 +1,7 @@ --- services: server: - image: gitea/gitea:1.23.8 + image: gitea/gitea:1.26.2 container_name: gitea-server environment: - USER_UID=1000 @@ -13,6 +13,7 @@ services: - GITEA__database__PASSWD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD not set} - GITEA__server__SSH_PORT=2221 - GITEA__server__ROOT_URL=https://git.${DOMAIN} + - GITEA__actions__ENABLE=true networks: - frontend - backend @@ -48,6 +49,30 @@ services: volumes: - /mnt/raid1/data/docker/volumes/gitea-db:/var/lib/postgresql/data restart: always + + + + runner: + image: gitea/runner:latest + container_name: gitea-runner + environment: + - GITEA_INSTANCE_URL=https://git.${DOMAIN} + - GITEA_RUNNER_REGISTRATION_TOKEN=${RUNNER_TOKEN:?RUNNER_TOKEN not set} + - GITEA_RUNNER_NAME=gitea-runner + networks: + - frontend + volumes: + - /mnt/raid1/data/docker/volumes/gitea-runner:/data + - /var/run/docker.sock:/var/run/docker.sock + depends_on: + - server + restart: always + + + + + + volumes: gitea-data: driver: local @@ -59,3 +84,6 @@ networks: external: true backend: external: true + + + diff --git a/matrix/matrix-synapse/compose.yaml b/matrix/matrix-synapse/compose.yaml new file mode 100644 index 0000000..5ba4f12 --- /dev/null +++ b/matrix/matrix-synapse/compose.yaml @@ -0,0 +1,66 @@ + +services: + + synapse: + image: docker.io/matrixdotorg/synapse:sha-7e4588a + + container_name: matrix-synapse-server + restart: always + # See the readme for a full documentation of the environment settings + # NOTE: You must edit homeserver.yaml to use postgres, it defaults to sqlite + environment: + - SYNAPSE_CONFIG_PATH=/data/homeserver.yaml + volumes: + - /mnt/raid1/matrix/files:/data + # .. or you may split this between different storage points + # - ./files:/data + # - /path/to/ssd:/data/uploads + # - /path/to/large_hdd:/data/media + depends_on: + - db + networks: + - frontend + - backend + labels: + - traefik.enable=true + - traefik.docker.network=frontend + + # ========================= + # Client traffic (443) + # ========================= + - traefik.http.routers.synapse-client.rule=Host(`${DOMAIN}`) && PathPrefix(`/_matrix`) + - traefik.http.routers.synapse-client.entrypoints=websecure + - traefik.http.routers.synapse-client.tls=true + - traefik.http.routers.synapse-client.tls.certresolver=cloudflare + - traefik.http.routers.synapse-client.service=synapse + - traefik.http.services.synapse.loadbalancer.server.port=8008 + + # ========================= + # Federation traffic (8448) + # ========================= + - traefik.http.routers.synapse-federation.rule=Host(`ksan.dev`) && PathPrefix(`/_matrix`) + - traefik.http.routers.synapse-federation.entrypoints=federation + - traefik.http.routers.synapse-federation.tls=true + - traefik.http.routers.synapse-federation.tls.certresolver=cloudflare + - traefik.http.routers.synapse-federation.service=synapse + db: + image: docker.io/postgres:15 + environment: + - POSTGRES_USER=${POSTGRES_USER} + - POSTGRES_PASSWORD=${POSTGRES_PASSWORD} + - POSTGRES_DB=${POSTGRES_DB} + - POSTGRES_INITDB_ARGS=--encoding=UTF-8 --lc-collate=C --lc-ctype=C + networks: + - backend + volumes: + - /mnt/raid1/matrix/db:/var/lib/postgresql/data + restart: always + +networks: + frontend: + external: true + backend: + external: true + + + diff --git a/matrix/matrix-synapse/well-known/matrix/client b/matrix/matrix-synapse/well-known/matrix/client new file mode 100644 index 0000000..eb4ed6d --- /dev/null +++ b/matrix/matrix-synapse/well-known/matrix/client @@ -0,0 +1,5 @@ +{ + "m.homeserver": { + "base_url": "https://matrix.ksan.dev" + } +} diff --git a/matrix/matrix-synapse/well-known/matrix/server b/matrix/matrix-synapse/well-known/matrix/server new file mode 100644 index 0000000..465d236 --- /dev/null +++ b/matrix/matrix-synapse/well-known/matrix/server @@ -0,0 +1,3 @@ +{ + "m.server": "ksan.dev:443" +} diff --git a/traefik/compose.yaml b/traefik/compose.yaml index 9702680..2582286 100644 --- a/traefik/compose.yaml +++ b/traefik/compose.yaml @@ -1,11 +1,12 @@ --- services: traefik: - image: docker.io/library/traefik:v3.4.0 + image: docker.io/library/traefik:v3.6.4 container_name: traefik ports: - 80:80 - 443:443 + #- 8448:8448 #- 8080:8080 volumes: - /run/docker.sock:/run/docker.sock:ro diff --git a/websites/ksan.dev/compose.yaml b/websites/ksan.dev/compose.yaml deleted file mode 100644 index 03f273b..0000000 --- a/websites/ksan.dev/compose.yaml +++ /dev/null @@ -1,20 +0,0 @@ -services: - nginx: - image: nginx:latest # Use the latest official Nginx image - container_name: ksan.dev_nginx - networks: - - frontend - volumes: - - ${LOCAL_PATH}:/usr/share/nginx/html - labels: - - traefik.enable=true - - traefik.http.routers.nginx-http.rule=Host(`${DOMAIN}`) || Host(`www.${DOMAIN}`) - - traefik.http.routers.nginx-http.entrypoints=web - - traefik.http.routers.nginx-https.tls=true - - traefik.http.routers.nginx-https.tls.certresolver=cloudflare - - traefik.http.routers.nginx-https.entrypoints=websecure - - traefik.http.routers.nginx-https.rule=Host(`${DOMAIN}`) || Host(`www.${DOMAIN}`) - restart: always -networks: - frontend: - external: true