Compare commits

...

9 Commits

Author SHA1 Message Date
fcd4dc85bc Update caddy
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2025-07-19 21:02:21 +02:00
840c6fa5b5 Update Makefile
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2025-07-14 15:51:30 +02:00
628c6fe906 Add tools and fix deps
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2025-07-07 23:38:20 +02:00
19a6c49949 Update minecraft-server
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2025-07-03 00:17:45 +02:00
045d142e27 Update readme
Signed-off-by: Bensuperpc <bensuperpc@gmail.com>
2025-07-01 22:24:44 +02:00
e5e13b11e8 Update readme and Caddy 2025-06-30 23:17:40 +02:00
736959c540 Improve forgejo 2025-06-30 00:01:37 +02:00
e942d364fe Improve Forgejo 2025-06-29 20:58:20 +02:00
c7b7ce8585 Forgejo 2025-06-29 13:42:09 +02:00
18 changed files with 364 additions and 54 deletions

View File

@@ -44,6 +44,10 @@ start:
start-at: start-at:
$(DOCKER_COMPOSE_COMMAND) up $(DOCKER_COMPOSE_COMMAND) up
.PHONY: no-start
no-start:
$(DOCKER_COMPOSE_COMMAND) up --no-start
.PHONY: check .PHONY: check
check: check:
$(DOCKER_COMPOSE_COMMAND) config $(DOCKER_COMPOSE_COMMAND) config
@@ -67,6 +71,10 @@ state:
$(DOCKER_COMPOSE_COMMAND) ps $(DOCKER_COMPOSE_COMMAND) ps
$(DOCKER_COMPOSE_COMMAND) top $(DOCKER_COMPOSE_COMMAND) top
.PHONY: volumes
volumes:
$(DOCKER_COMPOSE_COMMAND) config --volumes
.PHONY: image-update .PHONY: image-update
image-update: image-update:
$(DOCKER_COMPOSE_COMMAND) pull $(DOCKER_COMPOSE_COMMAND) pull

View File

@@ -11,17 +11,26 @@
#// // #// //
#////////////////////////////////////////////////////////////// #//////////////////////////////////////////////////////////////
ADMIN_SERVICES := openssh uptime-kuma yacht
BLOG_SERVICES := wordpress BLOG_SERVICES := wordpress
TORRENTS_SERVICES := qbittorrent transmission 7DAYS_TO_DIE_SERVICES := 7daystodie_server 7daystodie_backup
SHARING_SERVICES := psitransfer picoshare privatebin projectsend jellyfin dufs gitea syncthing MINECRAFT_SERVICES := minecraft_server minecraft_backup
ADMIN_SERVICES := yacht uptime-kuma openssh SATISFACTORY_SERVICES := satisfactory_server satisfactory_backup
UTILS_SERVICES := it-tools stirlingpdf omni-tools GIT_SERVICES := forgejo forgejo-runner
# gitea gitea-runner
IA_SERVICES := open-webui IA_SERVICES := open-webui
# gitea-runner SHARING_SERVICES := psitransfer picoshare privatebin projectsend jellyfin dufs syncthing
GAME_SERVICES := mc-server mc-backup TORRENTS_SERVICES := qbittorrent transmission
# 7daystodie_server 7daystodie_backup satisfactory_server satisfactory_backup UTILS_SERVICES := it-tools stirlingpdf omni-tools
MAIN_SERVICES := main_infrastructure caddy homepage
PROJECT_DIRECTORY := infrastructure PROJECT_DIRECTORY := infrastructure
DOCKER_PROFILES := main_infrastructure caddy homepage $(BLOG_SERVICES) $(SHARING_SERVICES) $(TORRENTS_SERVICES) $(ADMIN_SERVICES) $(UTILS_SERVICES) $(IA_SERVICES) $(GAME_SERVICES) DOCKER_PROFILES := $(MAIN_SERVICES) \
$(ADMIN_SERVICES) $(BLOG_SERVICES) $(7DAYS_TO_DIE_SERVICES) $(MINECRAFT_SERVICES) \
$(SATISFACTORY_SERVICES) \
$(GIT_SERVICES) $(IA_SERVICES) $(SHARING_SERVICES) \
$(TORRENTS_SERVICES) $(UTILS_SERVICES)
include DockerCompose.mk include DockerCompose.mk

127
README.md
View File

@@ -15,6 +15,7 @@ If you have any **questions** or **suggestions**, feel free to open an issue or
- [x] Wordpress (Via FASTCGI/caddy) - [x] Wordpress (Via FASTCGI/caddy)
- [x] Jellyfin (Media server) - [x] Jellyfin (Media server)
- [x] Gitea (Git server) - [x] Gitea (Git server)
- [x] Forgejo (Git server, fork of Gitea)
- [x] Uptime Kuma (Monitoring) - [x] Uptime Kuma (Monitoring)
- [x] qbittorrent and transmission (Torrent client/server) - [x] qbittorrent and transmission (Torrent client/server)
- [x] SyncThing (File synchronization) - [x] SyncThing (File synchronization)
@@ -45,9 +46,25 @@ The homepage is a dashboard with many widgets and services.
- [Docker Compose](https://docs.docker.com/compose/install/) - [Docker Compose](https://docs.docker.com/compose/install/)
- [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
- [Web domain](https://www.ovh.com/world/domains/) (I use OVH) - [Web domain](https://www.ovh.com/world/domains/) (I use OVH)
- [Open port 80, 443, 22 and 2222 on your router](http://192.168.1.1/) - [Open port 80, 443, 22, 2222 and 5555 on your router](http://192.168.1.1/)
- For games server, you need to open these ports (7777, 25565, 26900, 26901, 26903) - For games server, you need to open these ports (7777, 25565, 26900, 26901, 26903)
List of ports used by the services in this infrastructure:
| Port number | Service | Description |
| ----------- | ------------- | ----------------- |
| 80 | Caddy | HTTP traffic |
| 443 | Caddy | HTTPS traffic |
| 22 | Forgejo | Git/SSH access |
| 2222 | OpenSSH | Global SSH access |
| 5555 | Gitea | Git/SSH access |
| 7777 | Satisfactory | Game server port |
| 25565 | Minecraft | Game server port |
| 26900 | 7 Days to Die | Game server port |
| 26901 | 7 Days to Die | Game server port |
| 26903 | 7 Days to Die | Game server port |
**To avoid get rate limit from letsencrypt (10 certificates per 3 hours), you need to disable some certificates in the caddyfiles and enable them 3h later...** **To avoid get rate limit from letsencrypt (10 certificates per 3 hours), you need to disable some certificates in the caddyfiles and enable them 3h later...**
### Clone ### Clone
@@ -78,34 +95,36 @@ Check if all bensuperpc.* are replaced by your domain in [Caddyfile](caddy/servi
And then, caddy will generate the certificate for you and renew it automatically :D And then, caddy will generate the certificate for you and renew it automatically :D
| Domain name | Type | Description | | Domain name | Type | Description |
| --- | --- | --- | | ------------------------------------------------------------------ | ---- | ------------------------------------------------------------ |
| [bensuperpc.org](https://bensuperpc.org) | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | [bensuperpc.org](https://bensuperpc.org) | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) |
| [www.bensuperpc.org](https://www.bensuperpc.org) | Main | Homepage | | [www.bensuperpc.org](https://www.bensuperpc.org) | Main | Homepage |
| [open-webui.bensuperpc.org](https://open-webui.bensuperpc.org) | Sub | For local chatGPT | | [open-webui.bensuperpc.org](https://open-webui.bensuperpc.org) | Sub | For local chatGPT |
| [wordpress.bensuperpc.org](https://wordpress.bensuperpc.org) | Sub | Wordpress website | | [wordpress.bensuperpc.org](https://wordpress.bensuperpc.org) | Sub | Wordpress website |
| [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | Sub | Uptime Kuma for monitoring | | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | Sub | Uptime Kuma for monitoring |
| [qbittorrent.bensuperpc.org](https://qbittorrent.bensuperpc.org) | Sub | Torrent client/server | | [qbittorrent.bensuperpc.org](https://qbittorrent.bensuperpc.org) | Sub | Torrent client/server |
| [transmission.bensuperpc.org](https://transmission.bensuperpc.org) | Sub | Torrent client/server | | [transmission.bensuperpc.org](https://transmission.bensuperpc.org) | Sub | Torrent client/server |
| [git.bensuperpc.org](https://git.bensuperpc.org) | Sub | Gitea for git | | [gitea.bensuperpc.org](https://gitea.bensuperpc.org) | Sub | Gitea for git |
| [link.bensuperpc.org](https://link.bensuperpc.org) | Sub | For link shortener | | [forgejo.bensuperpc.org](https://forgejo.bensuperpc.org/) | Sub | Fork of Gitea for git |
| [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | Sub | Jellyfin for media server | | [git.bensuperpc.org](https://git.bensuperpc.org) | Sub | Fork of Gitea for git |
| [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | Sub | SyncThing for file synchronization | | [link.bensuperpc.org](https://link.bensuperpc.org) | Sub | For link shortener |
| [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org) | Sub | PsiTransfer for file sharing | | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | Sub | Jellyfin for media server |
| [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org) | Sub | Tools for IT | | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | Sub | SyncThing for file synchronization |
| [omni-tools.bensuperpc.org](https://omni-tools.bensuperpc.org) | Sub | Tools for IT | | [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org) | Sub | PsiTransfer for file sharing |
| [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org) | Sub | Pastebin | | [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org) | Sub | Tools for IT |
| [yacht.bensuperpc.org](https://yacht.bensuperpc.org) | Sub | Web interface for managing docker containers | | [omni-tools.bensuperpc.org](https://omni-tools.bensuperpc.org) | Sub | Tools for IT |
| [projectsend.bensuperpc.org](https://projectsend.bensuperpc.org) | Sub | ProjectSend for file sharing | | [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org) | Sub | Pastebin |
| [picoshare.bensuperpc.org](https://picoshare.bensuperpc.org) | Sub | Picoshare for file sharing | | [yacht.bensuperpc.org](https://yacht.bensuperpc.org) | Sub | Web interface for managing docker containers |
| [dufs.bensuperpc.org](https://dufs.bensuperpc.org) | Sub | Dufs for file sharing | | [projectsend.bensuperpc.org](https://projectsend.bensuperpc.org) | Sub | ProjectSend for file sharing |
| [public.bensuperpc.org](https://public.bensuperpc.org) | Sub | Caddy for file sharing | | [picoshare.bensuperpc.org](https://picoshare.bensuperpc.org) | Sub | Picoshare for file sharing |
| [memos.bensuperpc.org](https://memos.bensuperpc.org) | Sub | Caddy for file sharing | | [dufs.bensuperpc.org](https://dufs.bensuperpc.org) | Sub | Dufs for file sharing |
| [stirlingpdf.bensuperpc.org](https://stirlingpdf.bensuperpc.org) | Sub | Stirling PDF tools | | [public.bensuperpc.org](https://public.bensuperpc.org) | Sub | Caddy for file sharing |
| bensuperpc.com | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | [memos.bensuperpc.org](https://memos.bensuperpc.org) | Sub | Caddy for file sharing |
| bensuperpc.fr | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | [stirlingpdf.bensuperpc.org](https://stirlingpdf.bensuperpc.org) | Sub | Stirling PDF tools |
| bensuperpc.net | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | bensuperpc.com | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) |
| bensuperpc.ovh | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | bensuperpc.fr | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) |
| bensuperpc.net | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) |
| bensuperpc.ovh | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) |
### Configure the infrastructure ### Configure the infrastructure
@@ -279,14 +298,54 @@ You can change the homepage config in these files:
- [settings.yaml](infrastructure/services/homepage/config/settings.yaml) - [settings.yaml](infrastructure/services/homepage/config/settings.yaml)
- [widgets.yaml](infrastructure/services/homepage/config/widgets.yaml) - [widgets.yaml](infrastructure/services/homepage/config/widgets.yaml)
### Forgejo
```sh
docker exec -it forgejo_runner /bin/bash
```
```sh
forgejo-runner generate-config > /data/config.yml
```
Now update the config.yml file to support docker-in-docker:
```yml
envs:
DOCKER_TLS_VERIFY: 1
DOCKER_CERT_PATH: /certs/client
DOCKER_HOST: tcp://docker:2376
labels: ["ubuntu-latest:docker://node:20-bookworm", "ubuntu-22.04:docker://node:20-bookworm"]
network: host
options: -v /certs/client:/certs/client
valid_volumes:
- /certs/client
```
Register the runner with your Forgejo instance:
```sh
forgejo-runner register
```
You will need to provide the following information:
```sh
https://forgejo.bensuperpc.org/
<Your Registration Token, in https://forgejo.bensuperpc.org/admin/actions/runners>
ubuntu-22.04:docker://ghcr.io/catthehacker/ubuntu:act-22.04
main
```
### Docker volumes ### Docker volumes
This infrastructure uses docker volumes to store data, all configuration/data for each service are not shared between services for security and maintenance reasons, but **public_data** and **private_data** are shared between all services to store your data. This infrastructure uses docker volumes to store data, all configuration/data for each service are not shared between services for security and maintenance reasons, but **public_data** and **private_data** are shared between all services to store your data.
| Volume name | Description | | Volume name | Description |
| --- | --- | | ------------ | ---------------------------------------------------------------------------------------------------------- |
| public_data | Public data reachable on internet via [dufs.bensuperpc.org](https://dufs.bensuperpc.org), can be disabled. | | public_data | Public data reachable on internet via [dufs.bensuperpc.org](https://dufs.bensuperpc.org), can be disabled. |
| private_data | Private data | | private_data | Private data |
### SSH access ### SSH access
@@ -333,6 +392,8 @@ ssh -p 2222 admin@bensuperpc.org
- [Stirling PDF](https://github.com/Stirling-Tools/Stirling-PDF) - [Stirling PDF](https://github.com/Stirling-Tools/Stirling-PDF)
- [open-webui](https://github.com/open-webui/open-webui) - [open-webui](https://github.com/open-webui/open-webui)
- [Fix docker volume](https://pratikpc.medium.com/use-docker-compose-named-volumes-as-non-root-within-your-containers-1911eb30f731) - [Fix docker volume](https://pratikpc.medium.com/use-docker-compose-named-volumes-as-non-root-within-your-containers-1911eb30f731)
- [Forgejo-runner](https://code.forgejo.org/forgejo/runner)
- [Forgejo-runner](https://huijzer.xyz/posts/55)
## License ## License

View File

@@ -9,6 +9,8 @@ include:
- services/dufs/docker-compose.dufs.yml - services/dufs/docker-compose.dufs.yml
# Gitea # Gitea
- services/gitea/docker-compose.gitea.yml - services/gitea/docker-compose.gitea.yml
# Forgejo
- services/forgejo/docker-compose.forgejo.yml
# Homepage # Homepage
- services/homepage/docker-compose.homepage.yml - services/homepage/docker-compose.homepage.yml
# It-tools # It-tools

View File

@@ -1,5 +1,5 @@
{ {
email bensuperpc@gmail.com email {$MAIL_DOMAIN}
key_type p384 key_type p384
log { log {

View File

@@ -87,11 +87,15 @@ transmission.{$MAIN_DOMAIN} {
} }
gitea.{$MAIN_DOMAIN} { gitea.{$MAIN_DOMAIN} {
redir https://git.{$MAIN_DOMAIN} permanent reverse_proxy gitea:3000
} }
git.{$MAIN_DOMAIN} { git.{$MAIN_DOMAIN} {
reverse_proxy gitea:3000 reverse_proxy forgejo:3000
}
forgejo.{$MAIN_DOMAIN} {
redir https://git.{$MAIN_DOMAIN}{uri} permanent
} }
jellyfin.{$MAIN_DOMAIN} { jellyfin.{$MAIN_DOMAIN} {

View File

@@ -1 +1,2 @@
MAIN_DOMAIN=bensuperpc.org MAIN_DOMAIN=bensuperpc.org
MAIL_DOMAIN=bensuperpc@gmail.com

View File

@@ -0,0 +1,95 @@
services:
# forgejo
forgejo:
image: codeberg.org/forgejo/forgejo:11-rootless
container_name: forgejo
profiles:
- forgejo
restart: on-failure:5
depends_on:
- database_forgejo
- caddy
ports:
- "22:22"
env_file:
- ./env/forgejo.env
volumes:
- forgejo_data:/var/lib/gitea
- forgejo_config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- infra-network
security_opt:
- no-new-privileges:true
# Database forgejo
database_forgejo:
image: mariadb:latest
container_name: database_forgejo
profiles:
- forgejo
depends_on:
- caddy
restart: on-failure:5
volumes:
- forgejo_db:/var/lib/mysql:rw
env_file:
- ./env/forgejo_db.env
command: '--default-authentication-plugin=mysql_native_password'
networks:
- infra-network
security_opt:
- no-new-privileges:true
# forgejo-runner
docker-in-docker:
image: code.forgejo.org/oci/docker:dind
container_name: 'docker_dind'
hostname: docker
networks:
- infra-network
profiles:
- forgejo
privileged: true
environment:
DOCKER_TLS_CERTDIR: /certs
DOCKER_HOST: docker-in-docker
volumes:
- forgejo_certs:/certs
forgejo_runner:
image: 'code.forgejo.org/forgejo/runner:6.3.1'
networks:
- infra-network
profiles:
- forgejo
links:
- docker-in-docker
depends_on:
docker-in-docker:
condition: service_started
container_name: 'forgejo_runner'
env_file:
- ./env/forgejo_runner.env
# user: 1001:1001
volumes:
# - ./config/forgejo_runner/config.yaml:/config.yaml:ro
- forgejo_runner:/data
- forgejo_certs:/certs
restart: 'unless-stopped'
# command: '/bin/sh -c "while : ; do sleep 1 ; done ;"'
command: '/bin/sh -c "sleep 5; forgejo-runner -c /data/config.yml daemon"'
volumes:
forgejo_data:
name: forgejo_data
forgejo_config:
name: forgejo_config
forgejo_db:
name: forgejo_db
forgejo_certs:
name: forgejo_certs
forgejo_runner:
name: forgejo_runner

View File

@@ -0,0 +1,25 @@
USER_UID=1000
USER_GID=1000
FORGEJO__database__DB_TYPE=mysql
FORGEJO__database__HOST=database_forgejo:3306
FORGEJO__database__NAME=forgejo
FORGEJO__database__USER=bensuperpc
FORGEJO__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j
FORGEJO__APP_NAME=The Homelab Git
FORGEJO__APP_SLOGAN=Personal Code, Mirrors, and More
FORGEJO__server__DOMAIN=git.bensuperpc.org
FORGEJO__server__SSH_DOMAIN=git.bensuperpc.org
FORGEJO__server__HTTP_PORT=3000
FORGEJO__server__SSH_LISTEN_PORT=22
FORGEJO__server__SSH_PORT=22
FORGEJO__server__ROOT_URL=https://git.bensuperpc.org
FORGEJO__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c
#FORGEJO__security__INTERNAL_TOKEN=
#FORGEJO__security__INSTALL_LOCK=true
FORGEJO__security__MIN_PASSWORD_LENGTH=8
FORGEJO__actions__ENABLED=true
FORGEJO__actions__DEFAULT_ACTIONS_URL="https://git.bensuperpc.org"
#FORGEJO__log__LEVEL: "debug"
FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false
FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions

View File

@@ -0,0 +1,4 @@
MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X
MARIADB_USER=bensuperpc
MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j
MARIADB_DATABASE=forgejo

View File

@@ -0,0 +1,3 @@
DOCKER_HOST=tcp://docker:2376
DOCKER_CERT_PATH=/certs/client
DOCKER_TLS_VERIFY=1

View File

@@ -10,14 +10,14 @@ services:
- database_gitea - database_gitea
- caddy - caddy
ports: ports:
- "22:22" - "5555:5555"
env_file: env_file:
- ./env/gitea.env - ./env/gitea.env
volumes: volumes:
- gitea_data:/var/lib/gitea - gitea_data:/var/lib/gitea
- gitea_config:/etc/gitea - gitea_config:/etc/gitea
# - /etc/timezone:/etc/timezone:ro - /etc/timezone:/etc/timezone:ro
# - /etc/localtime:/etc/localtime:ro - /etc/localtime:/etc/localtime:ro
networks: networks:
- infra-network - infra-network
security_opt: security_opt:
@@ -28,7 +28,6 @@ services:
image: mariadb:latest image: mariadb:latest
container_name: database_gitea container_name: database_gitea
profiles: profiles:
- database
- gitea - gitea
depends_on: depends_on:
- caddy - caddy

View File

@@ -10,6 +10,6 @@ GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c
GITEA__server__DOMAIN=git.bensuperpc.org GITEA__server__DOMAIN=git.bensuperpc.org
GITEA__server__SSH_DOMAIN=git.bensuperpc.org GITEA__server__SSH_DOMAIN=git.bensuperpc.org
GITEA__server__HTTP_PORT=3000 GITEA__server__HTTP_PORT=3000
GITEA__server__SSH_LISTEN_PORT=22 GITEA__server__SSH_LISTEN_PORT=5555
GITEA__server__SSH_PORT=22 GITEA__server__SSH_PORT=5555
GITEA__server__ROOT_URL=https://git.bensuperpc.org GITEA__server__ROOT_URL=https://git.bensuperpc.org

View File

@@ -96,6 +96,12 @@
description: Gitea description: Gitea
ping: gitea.bensuperpc.org ping: gitea.bensuperpc.org
container: gitea container: gitea
- forgejo:
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/forgejo.png
href: https://forgejo.bensuperpc.org/
description: Forgejo
ping: forgejo.bensuperpc.org
container: forgejo
- open-webui: - open-webui:
icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/open-webui.png icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/open-webui.png
href: https://open-webui.bensuperpc.org/ href: https://open-webui.bensuperpc.org/

View File

@@ -5,8 +5,6 @@ services:
container_name: openssh container_name: openssh
profiles: profiles:
- openssh - openssh
depends_on:
- caddy
restart: on-failure:5 restart: on-failure:5
env_file: env_file:
- ./env/openssh.env - ./env/openssh.env
@@ -32,6 +30,12 @@ services:
- minecraft_server_data:/minecraft_server_data:rw - minecraft_server_data:/minecraft_server_data:rw
- minecraft_proxy_data:/minecraft_proxy_data:rw - minecraft_proxy_data:/minecraft_proxy_data:rw
- minecraft_rcon_data:/minecraft_rcon_data:rw - minecraft_rcon_data:/minecraft_rcon_data:rw
- forgejo_data:/forgejo_data:rw
- forgejo_config:/forgejo_config:rw
- forgejo_db:/forgejo_db:rw
- gitea_data:/gitea_data:rw
- gitea_config:/gitea_config:rw
- gitea_db:/gitea_db:rw
networks: networks:
- infra-network - infra-network
@@ -77,3 +81,17 @@ volumes:
name: minecraft_proxy_data name: minecraft_proxy_data
minecraft_rcon_data: minecraft_rcon_data:
name: minecraft_rcon_data name: minecraft_rcon_data
# forgejo
forgejo_data:
name: forgejo_data
forgejo_config:
name: forgejo_config
forgejo_db:
name: forgejo_db
# gitea
gitea_data:
name: gitea_data
gitea_config:
name: gitea_config
gitea_db:
name: gitea_db

75
tools/docker_volumes_export.sh Executable file
View File

@@ -0,0 +1,75 @@
#!/usr/bin/env bash
set -euo pipefail
volumes=(
7daystodie_backup
7daystodie_server_save
7daystodie_server_config_lgsm
7daystodie_server_log
# 7daystodie_server_file
# satisfactory_server_config
forgejo_data
wordpress_db
minecraft_proxy_data
stirlingpdf_tessdata
wordpress
gitea_db
# wordpress_backup
projectsend_share
transmission_config
# public_data
projectsend_db
projectsend_config
open-webui
minecraft_rcon_data
jellyfin_cache
caddy_backup
# satisfactory_backup
homepage_log
syncthing_config
openssh_config
minecraft_server_backup
qbittorrent_config
gitea_runner
gitea_config
minecraft_server_data
ollama
caddy_data
forgejo_config
stirlingpdf_config
uptimekuma_data
# private_data
yacht_config
transmission_watch
forgejo_db
privatebin_data
caddy_config
psitransfer_data
forgejo_certs
forgejo_runner
gitea_data
jellyfin_config
picoshare_data
)
export_volume() {
local volume="$1"
echo "Exporting volume: $volume to $(pwd)/$volume.tar.gz"
docker run --rm -v "$volume:/source" -v "$(pwd):/dest" alpine sh -c 'apk add --no-cache tar && tar --numeric-owner -cpvzf /dest/"$0.tar.gz" -C /source .' "$volume"
}
import_volume() {
local volume="$1"
echo "Importing volume: $volume from $(pwd)/$volume.tar.gz"
docker run --rm -v "$volume:/dest" -v "$(pwd):/source" alpine sh -c 'apk add --no-cache tar && tar --numeric-owner -xpvzf /source/"$0.tar.gz" -C /dest' "$volume"
}
echo "Starting sync process..."
for ((i=0; i < ${#volumes[@]}; i++)); do
export_volume "${volumes[$i]}"
done
echo "Sync process completed."

View File

@@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
set -euo pipefail set -euo pipefail
if [ "$#" -ne 2 ]; then if [ "$#" -ne 2 ]; then