mirror of
				https://github.com/bensuperpc/infrastructure.git
				synced 2025-10-25 07:16:21 +02:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			91ed7ef60f
			...
			dns
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6dd7a30b03 | 
| @@ -1,15 +0,0 @@ | ||||
| name: Build And Test | ||||
| run-name: ${{ gitea.actor }} is runs ci pipeline | ||||
| on: [ push ] | ||||
|  | ||||
| jobs: | ||||
|   build: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - run: ls | ||||
| publish: | ||||
|     runs-on: cth-ubuntu-latest | ||||
|     needs: build | ||||
|     if: gitea.ref == 'refs/heads/main' | ||||
|     steps: | ||||
|       - run: ls | ||||
							
								
								
									
										24
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							| @@ -22,27 +22,11 @@ jobs: | ||||
|     timeout-minutes: 30 | ||||
|     steps: | ||||
|       - name: "Checkout Code" | ||||
|         uses: actions/checkout@v5 | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           submodules: "recursive" | ||||
|           fetch-depth: 0 | ||||
|       - name: "Check compose" | ||||
|         run: make check | ||||
|       - name: "Update server image" | ||||
|         run: make image-update | ||||
|       - name: "Update server" | ||||
|         run: make update | ||||
|       - name: "Build server" | ||||
|         run: make build | ||||
| #      - name: "Start server" | ||||
| #        run: make start | ||||
|       - name: "Logs server" | ||||
|         run: make logs | ||||
|       - name: "State server" | ||||
|         run: make state | ||||
|       - name: "Stop server" | ||||
|         run: make stop | ||||
|       - name: "Down server" | ||||
|         run: make down | ||||
|       - name: "Clean server" | ||||
|         run: make clean | ||||
|       - name: "Purge server" | ||||
|         run: make purge | ||||
|         run: make build | ||||
							
								
								
									
										2
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/workflows/submodule-update.yml
									
									
									
									
										vendored
									
									
								
							| @@ -11,7 +11,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: "Checkout Code" | ||||
|         uses: actions/checkout@v5 | ||||
|         uses: actions/checkout@v4 | ||||
|         with: | ||||
|           token: ${{ secrets.CI_TOKEN }} | ||||
|           repository: ${{ github.repository }} | ||||
|   | ||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +1 @@ | ||||
|  | ||||
| /*.tar.gz | ||||
|   | ||||
							
								
								
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +0,0 @@ | ||||
| [submodule "infrastructure/services/minecraft-server"] | ||||
| 	path = infrastructure/services/minecraft-server | ||||
| 	url = git@github.com:bensuperpc/docker-minecraft-server.git | ||||
| [submodule "infrastructure/services/7daystodie"] | ||||
| 	path = infrastructure/services/7daystodie-server | ||||
| 	url = git@github.com:bensuperpc/docker-7daystodie.git | ||||
| [submodule "infrastructure/services/satisfactory"] | ||||
| 	path = infrastructure/services/satisfactory-server | ||||
| 	url = git@github.com:bensuperpc/docker-satisfactory.git | ||||
|   | ||||
| @@ -1,77 +0,0 @@ | ||||
| #////////////////////////////////////////////////////////////// | ||||
| #//                                                          // | ||||
| #//  docker-multimedia, 2024                                 // | ||||
| #//  Created: 30, May, 2021                                  // | ||||
| #//  Modified: 14 November, 2024                             // | ||||
| #//  file: -                                                 // | ||||
| #//  -                                                       // | ||||
| #//  Source:                                                 // | ||||
| #//  OS: ALL                                                 // | ||||
| #//  CPU: ALL                                                // | ||||
| #//                                                          // | ||||
| #////////////////////////////////////////////////////////////// | ||||
|  | ||||
| PROJECT_DIRECTORY ?= infrastructure | ||||
|  | ||||
| DOCKER_EXEC ?= docker | ||||
|  | ||||
| CONFIG_DIRECTORY ?= configs | ||||
| CONFIG_FILES ?= $(addprefix $(CONFIG_DIRECTORY)/,$(addsuffix .conf,$(CONFIGS))) | ||||
| include $(CONFIG_FILES) | ||||
|  | ||||
| DOCKER_PROFILES ?= | ||||
| EXTRA_PROFILES ?= | ||||
|  | ||||
| PROFILE_CMD ?= $(addprefix --profile ,$(DOCKER_PROFILES) $(EXTRA_PROFILES)) | ||||
|  | ||||
| COMPOSE_FILES ?=  $(shell find ./$(PROJECT_DIRECTORY) -maxdepth 1 -name 'docker-compose*.yml' -type f | sed -e 's/^/--file /') | ||||
| COMPOSE_DIR ?= --project-directory ./$(PROJECT_DIRECTORY) | ||||
|  | ||||
| UID ?= 1000 | ||||
| GID ?= 1000 | ||||
|  | ||||
| ENV_ARG_VAR ?= PUID=$(UID) PGID=$(GID) | ||||
|  | ||||
| DOCKER_COMPOSE_COMMAND ?= $(ENV_ARG_VAR) $(DOCKER_EXEC) compose $(COMPOSE_DIR) $(COMPOSE_FILES) $(PROFILE_CMD) | ||||
|  | ||||
| .PHONY: build all | ||||
| all: start | ||||
|  | ||||
| GENERIC_TARGETS := build down up run config logs pull images start restart stop | ||||
|  | ||||
| .PHONY: $(GENERIC_TARGETS) | ||||
| $(GENERIC_TARGETS): | ||||
| 	$(DOCKER_COMPOSE_COMMAND) $@ | ||||
|  | ||||
| .PHONY: start-detached | ||||
| start-detached: | ||||
| 	$(DOCKER_COMPOSE_COMMAND) up -d | ||||
|  | ||||
| .PHONY: no-start | ||||
| no-start: | ||||
| 	$(DOCKER_COMPOSE_COMMAND) up --no-start | ||||
|  | ||||
| .PHONY: state | ||||
| state: | ||||
| 	$(DOCKER_COMPOSE_COMMAND) ps | ||||
| 	$(DOCKER_COMPOSE_COMMAND) top | ||||
|  | ||||
| .PHONY: volumes | ||||
| volumes: | ||||
| 	$(DOCKER_COMPOSE_COMMAND) config --volumes | ||||
|  | ||||
| .PHONY: git-update | ||||
| git-update:  | ||||
| #	git submodule update --init --recursive --remote | ||||
| 	git pull --recurse-submodules --all --progress | ||||
|  | ||||
| .PHONY: update | ||||
| update: image-update git-update | ||||
|  | ||||
| .PHONY: clean | ||||
| clean: | ||||
| 	docker system prune -f | ||||
|  | ||||
| .PHONY: purge | ||||
| purge: | ||||
| 	$(ENV_ARG_VAR) $(DOCKER_EXEC) compose $(COMPOSE_DIR) $(COMPOSE_FILES) down -v --rmi all | ||||
							
								
								
									
										77
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,8 +1,8 @@ | ||||
| #////////////////////////////////////////////////////////////// | ||||
| #//                                                          // | ||||
| #//  Script, 2022                                            // | ||||
| #//  Infrastructure, 2024                                    // | ||||
| #//  Created: 14, April, 2022                                // | ||||
| #//  Modified: 30, November, 2024                            // | ||||
| #//  Modified: 05, May, 2024                                 // | ||||
| #//  file: -                                                 // | ||||
| #//  -                                                       // | ||||
| #//  Source:                                                 // | ||||
| @@ -11,21 +11,64 @@ | ||||
| #//                                                          // | ||||
| #////////////////////////////////////////////////////////////// | ||||
|  | ||||
| #ADMIN_SERVICES := openssh | ||||
| # uptime-kuma | ||||
| #BLOG_SERVICES := wordpress | ||||
| #IA_SERVICES := open-webui | ||||
| #SHARING_SERVICES := privatebin | ||||
| # jellyfin | ||||
| # psitransfer picoshare projectsend dufs syncthing | ||||
| #UTILS_SERVICES := it-tools omni-tools cyberchef | ||||
| # homepage | ||||
| # stirlingpdf | ||||
| DOCKER := docker | ||||
|  | ||||
| PROJECT_DIRECTORY := infrastructure | ||||
| CONFIG_DIRECTORY := configs | ||||
| PROFILES := caddy wordpress adminer uptime-kuma qbittorrent gitea jellyfin watchtower backup openssh dns-server syncthing | ||||
| PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) | ||||
|  | ||||
| CONFIGS := torrent | ||||
| #DOCKER_PROFILES :=  | ||||
| COMPOSE_FILES :=  $(shell find docker-compose*.yml | sed -e 's/^/--file /') | ||||
|  | ||||
| include DockerCompose.mk | ||||
| .PHONY: build all | ||||
| all: start | ||||
|  | ||||
| .PHONY: build | ||||
| build: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) build | ||||
|  | ||||
| .PHONY: start | ||||
| start: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) up -d | ||||
|  | ||||
| .PHONY: start-at | ||||
| start-at: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) up | ||||
|  | ||||
| .PHONY: docker-check | ||||
| docker-check: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) config | ||||
|  | ||||
| .PHONY: stop | ||||
| stop: down | ||||
|  | ||||
| .PHONY: down | ||||
| down: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) down | ||||
|  | ||||
| .PHONY: restart | ||||
| restart: stop start | ||||
|  | ||||
| .PHONY: logs | ||||
| logs: | ||||
| 	docker compose $(COMPOSE_FILES) logs | ||||
|  | ||||
| .PHONY: state | ||||
| state: | ||||
| 	docker compose $(COMPOSE_FILES) ps | ||||
| 	docker compose $(COMPOSE_FILES) top | ||||
|  | ||||
| .PHONY: update-docker | ||||
| update-docker: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) pull | ||||
|  | ||||
| .PHONY: update | ||||
| update: update-docker | ||||
| #	git submodule update --init --recursive --remote | ||||
| #	git pull --recurse-submodules --all --progress | ||||
|  | ||||
| .PHONY: clean | ||||
| clean: | ||||
| 	$(DOCKER) images --filter=reference='bensuperpc/*' --format='{{.Repository}}:{{.Tag}}' | xargs -r $(DOCKER) rmi -f | ||||
|  | ||||
| .PHONY: purge | ||||
| purge: | ||||
| 	docker compose $(COMPOSE_FILES) $(PROFILE_CMD) down -v --rmi all | ||||
							
								
								
									
										325
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										325
									
								
								README.md
									
									
									
									
									
								
							| @@ -1,42 +1,28 @@ | ||||
| # Infrastructure | ||||
|  | ||||
| _Open source, decentralized and self-hosted infrastructure for many services._ | ||||
| _My personal infrastructure for my servers and services._ | ||||
|  | ||||
| ## About | ||||
|  | ||||
| This is my infrastructure. It's a collection of scripts and configuration files that I use to manage my servers and services. | ||||
| It uses caddy and docker-compose to run my services (And many other things). | ||||
| It's a **work in progress**, and I'm still learning a lot about it. | ||||
| If you have any **questions** or **suggestions**, feel free to open an issue or a pull request. | ||||
|  | ||||
| ## Features | ||||
|  | ||||
| - [x] caddy 2 HTTP/S reverse proxy | ||||
| - [x] caddy 2 reverse proxy | ||||
| - [x] Docker / docker-compose | ||||
| - [x] Caddy | ||||
| - [x] Wordpress (Via FASTCGI/caddy) | ||||
| - [x] Adminer (MariaDB) | ||||
| - [x] Jellyfin (Media server) | ||||
| - [x] Gitea (Git server) | ||||
| - [x] Forgejo (Git server, fork of Gitea) | ||||
| - [x] Uptime Kuma (Monitoring) | ||||
| - [x] qbittorrent and transmission (Torrent client/server) | ||||
| - [x] SyncThing (File synchronization) | ||||
| - [x] PsiTransfer, ProjectSend, Picoshare (File sharing) | ||||
| - [x] it-tools and omni-tools (Tools for IT) | ||||
| - [x] Open-WebUI (Local chatGPT) | ||||
| - [x] Privatebin (Pastebin) | ||||
| - [X] [Satisfactory](https://github.com/bensuperpc/docker-satisfactory) | ||||
| - [x] [7 days to die](https://github.com/bensuperpc/docker-7daystodie) | ||||
| - [x] [minecraft](https://github.com/bensuperpc/docker-minecraft-server) | ||||
|  | ||||
| ## Architecture | ||||
|  | ||||
|  | ||||
| - [x] Torrent server | ||||
|  | ||||
| ## Screenshots | ||||
|  | ||||
| The homepage is a dashboard with many widgets and services. | ||||
|  | ||||
|  | ||||
|  | ||||
| ## Installation and configuration | ||||
|  | ||||
| ### Requirements | ||||
| @@ -45,26 +31,9 @@ The homepage is a dashboard with many widgets and services. | ||||
| - [Docker Compose](https://docs.docker.com/compose/install/) | ||||
| - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | ||||
| - [Web domain](https://www.ovh.com/world/domains/) (I use OVH) | ||||
| - [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) | ||||
| - [Open port 80 and 443 on your router](http://192.168.0.1/) (I use a SFR box with default IP) | ||||
|  | ||||
| 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 | ||||
|  | ||||
| @@ -80,8 +49,6 @@ Go to the folder | ||||
| cd infrastructure | ||||
| ``` | ||||
|  | ||||
| Change services you want to enable in the [Makefile](Makefile) file, by default all services are enabled (games servers included). | ||||
|  | ||||
| ### Configure the domain | ||||
|  | ||||
| For all **bensuperpc.org**, you need to replace it with your domain, example: **mydomain.com**, so the same for **bensuperpc.com** ect... | ||||
| @@ -90,34 +57,25 @@ For all **bensuperpc.org**, you need to replace it with your domain, example: ** | ||||
| find . \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i 's/bensuperpc.org/mydomain.com/g' | ||||
| ``` | ||||
|  | ||||
| Check if all bensuperpc.* are replaced by your domain in [Caddyfile](caddy/services/wordpress/Caddyfile) | ||||
| Check if all bensuperpc.* are replaced by your domain in [Caddyfile](caddy/wordpress/Caddyfile) | ||||
|  | ||||
| And then, caddy will generate the certificate for you and renew it automatically :D | ||||
|  | ||||
| | Domain name                                                        | Type | Description                                                  | | ||||
| | ------------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | ||||
| | [bensuperpc.org](https://bensuperpc.org)                           | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | ||||
| | [www.bensuperpc.org](https://www.bensuperpc.org)                   | Main | Homepage                                                     | | ||||
| | [open-webui.bensuperpc.org](https://open-webui.bensuperpc.org)     | Sub  | For local chatGPT                                            | | ||||
| | [wordpress.bensuperpc.org](https://wordpress.bensuperpc.org)       | Sub  | Wordpress website                                            | | ||||
| | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org)     | Sub  | Uptime Kuma for monitoring                                   | | ||||
| | [qbittorrent.bensuperpc.org](https://qbittorrent.bensuperpc.org)   | Sub  | Torrent client/server                                        | | ||||
| | [transmission.bensuperpc.org](https://transmission.bensuperpc.org) | Sub  | Torrent client/server                                        | | ||||
| | [gitea.bensuperpc.org](https://gitea.bensuperpc.org)               | Sub  | Gitea for git                                                | | ||||
| | [forgejo.bensuperpc.org](https://forgejo.bensuperpc.org/)          | Sub  | Fork of Gitea for git                                        | | ||||
| | [git.bensuperpc.org](https://git.bensuperpc.org)                   | Sub  | Fork of Gitea for git                                        | | ||||
| | [link.bensuperpc.org](https://link.bensuperpc.org)                 | Sub  | For link shortener                                           | | ||||
| | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org)         | Sub  | Jellyfin for media server                                    | | ||||
| | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org)       | Sub  | SyncThing for file synchronization                           | | ||||
| | [psitransfer.bensuperpc.org](https://psitransfer.bensuperpc.org)   | Sub  | PsiTransfer for file sharing                                 | | ||||
| | [it-tools.bensuperpc.org](https://it-tools.bensuperpc.org)         | Sub  | Tools for IT                                                 | | ||||
| | [omni-tools.bensuperpc.org](https://omni-tools.bensuperpc.org)     | Sub  | Tools for IT                                                 | | ||||
| | [privatebin.bensuperpc.org](https://privatebin.bensuperpc.org)     | Sub  | Pastebin                                                     | | ||||
| | [projectsend.bensuperpc.org](https://projectsend.bensuperpc.org)   | Sub  | ProjectSend for file sharing                                 | | ||||
| | [picoshare.bensuperpc.org](https://picoshare.bensuperpc.org)       | Sub  | Picoshare for file sharing                                   | | ||||
| | [dufs.bensuperpc.org](https://dufs.bensuperpc.org)                 | Sub  | Dufs for file sharing                                        | | ||||
| | [memos.bensuperpc.org](https://memos.bensuperpc.org)               | Sub  | Caddy for file sharing                                       | | ||||
| | [stirlingpdf.bensuperpc.org](https://stirlingpdf.bensuperpc.org)   | Sub  | Stirling PDF tools                                           | | ||||
| | Domain name | Type | Description | | ||||
| | --- | --- | --- | | ||||
| | [bensuperpc.org](https://bensuperpc.org) | Main | Main domain | | ||||
| | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | Sub | Adminer for MariaDB for wordpress only | | ||||
| | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | Sub | Uptime Kuma for monitoring | | ||||
| | [torrent.bensuperpc.org](https://torrent.bensuperpc.org) | Sub | Torrent server | | ||||
| | [git.bensuperpc.org](https://git.bensuperpc.org) | Sub | Gitea for git | | ||||
| | [link.bensuperpc.org](https://link.bensuperpc.org) | Sub | For link shortener | | ||||
| | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | Sub | Jellyfin for media server | | ||||
| | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | Sub | SyncThing for file synchronization | | ||||
| | [ssh.bensuperpc.org](https://ssh.bensuperpc.org) | Sub | Openssh for ssh | | ||||
| | bensuperpc.com | Main | Redirect to bensuperpc.org | | ||||
| | bensuperpc.fr | Main | Redirect to bensuperpc.org | | ||||
| | bensuperpc.net | Main | Redirect to bensuperpc.org | | ||||
| | bensuperpc.ovh | Main | Redirect to bensuperpc.org | | ||||
|  | ||||
| ### Configure the infrastructure | ||||
|  | ||||
| @@ -129,127 +87,50 @@ You can generate a password with 32 characters: | ||||
| openssl rand -base64 32 | ||||
| ``` | ||||
|  | ||||
| Or online: [passwordsgenerator.net](https://passwordsgenerator.net/) | ||||
|  | ||||
| #### Caddy | ||||
|  | ||||
| For [caddy_backup.env](infrastructure/services/caddy/env/caddy_backup.env) file, you need to change the password(s) for the restic backup. | ||||
|  | ||||
| ```sh | ||||
| RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| ``` | ||||
|  | ||||
| #### Wordpress | ||||
|  | ||||
| For the [wordpress.env](infrastructure/services/wordpress/env/wordpress.env) file, you need to change the password and user for the database. | ||||
| For the [wordpress.env](env/wordpress.env) file, you need to change the password and user for the database. | ||||
|  | ||||
| ```sh | ||||
| WORDPRESS_DB_USER=bensuperpc | ||||
| WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| WORDPRESS_DB_NAME=wordpress | ||||
| WORDPRESS_DB_HOST=wordpress_db:3306 | ||||
| ``` | ||||
|  | ||||
| For [wordpress_db.env](infrastructure/services/wordpress/env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| For [wordpress_db.env](env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||
|      | ||||
| ```sh | ||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| MARIADB_DATABASE=wordpress | ||||
| ``` | ||||
|  | ||||
| For [wordpress_backup.env](infrastructure/services/wordpress/env/wordpress_backup.env) file, you need to change the password(s) for the restic backup. | ||||
| For [adminer.env](env/adminer.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| ADMINER_DEFAULT_SERVER=wordpress_db | ||||
| ``` | ||||
|  | ||||
| #### Gitea | ||||
|  | ||||
| For [gitea.env](infrastructure/services/gitea/env/gitea.env) file, you need to change the password(s) and user for the database. | ||||
| For [gitea.env](env/gitea.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| GITEA__database__DB_TYPE=mysql | ||||
| GITEA__database__HOST=database_gitea:3306 | ||||
| GITEA__database__NAME=gitea | ||||
| GITEA__database__USER=bensuperpc | ||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c | ||||
| ``` | ||||
|  | ||||
| For [gitea_db.env](infrastructure/services/gitea/env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||
| For [gitea_db.env](env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| ``` | ||||
|  | ||||
| #### PsiTransfer | ||||
|  | ||||
| For [psitransfer.env](infrastructure/services/psitransfer/env/psitransfer.env) file, you need to change the secret key. | ||||
|  | ||||
| ```sh | ||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||
| ``` | ||||
|  | ||||
| For [projectsend_db.env](infrastructure/services/projectsend/env/projectsend_db.env) file, you need to change the password(s) and user for the database. | ||||
|  | ||||
| ```sh | ||||
| MARIADB_ROOT_PASSWORD=8O34297GrBfT3Ld34Lfg9mpotmZwbJtt | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=wdSUa1JEZhXie5AJ5NcX1w73xmpO12EY | ||||
| ``` | ||||
|  | ||||
| #### Picoshare | ||||
|  | ||||
| For [picoshare.env](infrastructure/services/picoshare/env/picoshare.env) file, you need to change the secret key. | ||||
|  | ||||
| ```sh | ||||
| PS_SHARED_SECRET=CBuS4DJLqIe93xF1KGYRrnhxUFBqLD2n | ||||
| ``` | ||||
|  | ||||
| #### Dufs | ||||
|  | ||||
| For [dufs.env](infrastructure/services/dufs/env/dufs.env) file, you need to change the secret key and if you want the user name. | ||||
|  | ||||
| ```sh | ||||
| DUFS_AUTH="admin:heqihlOfBmJDESGFlpbPi7P7Mi6F7RkV@/:rw|@/:ro" | ||||
| ``` | ||||
|  | ||||
| #### Stirling PDF | ||||
|  | ||||
| For [stirlingpdf.env](infrastructure/services/stirlingpdf/env/stirlingpdf.env) file, it's **completly optional**, you can change the password(s) and user. | ||||
|  | ||||
| ```sh | ||||
| # Enable security, optional | ||||
| DOCKER_ENABLE_SECURITY=true | ||||
| SECURITY_ENABLE_LOGIN=true | ||||
| # Can be disabled after initial login, optional, | ||||
| # default it admin:stirling | ||||
| SECURITY_INITIALLOGIN_USERNAME=admin | ||||
| SECURITY_INITIALLOGIN_PASSWORD=Jw9U039f5xc2mFcacvGvPD9RjwIh4DzO | ||||
| ``` | ||||
|  | ||||
| #### OpenSSH | ||||
|  | ||||
| You can need to add/change the public ssh key [id_ed25519.pub](infrastructure/services/openssh/config/authorized_keys/id_ed25519.pub) (its my public key), also change the config/password in [openssh.env](infrastructure/services/openssh/env/openssh.env): | ||||
|  | ||||
| ```sh | ||||
| SUDO_ACCESS=true | ||||
| #PUBLIC_KEY_URL=https://github.com/bensuperpc.keys | ||||
| PUBLIC_KEY_DIR=/authorized_ssh_keys | ||||
| USER_PASSWORD=rdUwf36C11PLmpU9Lvq7tP5pfFBKAuCh | ||||
|  | ||||
| #PUBLIC_KEY=yourpublickey | ||||
| #PUBLIC_KEY_FILE=/path/to/file | ||||
| #PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys | ||||
| #USER_PASSWORD_FILE=/path/to/file | ||||
| ``` | ||||
|  | ||||
| #### Open-WebUI | ||||
|  | ||||
| For [open-webui.env](infrastructure/services/open-webui/env/open-webui.env) file, entirely optional. | ||||
|  | ||||
| To download the model, you can use: | ||||
|  | ||||
| ```sh | ||||
| docker exec -it ollama ollama run deepseek-r1:8b | ||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MYSQL_DATABASE=gitea | ||||
| ``` | ||||
|  | ||||
| ### Start the infrastructure | ||||
| @@ -272,87 +153,24 @@ Remove countainers with: | ||||
| make down | ||||
| ``` | ||||
|  | ||||
| ### All services | ||||
|  | ||||
| You can find all services on the [docker-compose.yml](docker-compose.yml) file or on this table: | ||||
|  | ||||
| | Service | Description | URL | | ||||
| | --- | --- | --- | | ||||
| | Wordpress | Wordpress website | [bensuperpc.org](https://bensuperpc.org) and [www.bensuperpc.org](https://www.bensuperpc.org) | | ||||
| | Adminer | Adminer for MariaDB | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | | ||||
| | Uptime Kuma | Uptime Kuma for monitoring | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | | ||||
| | Torrent | Torrent server | [torrent.bensuperpc.org](https://torrent.bensuperpc.org) | | ||||
| | Gitea | Gitea for git | [git.bensuperpc.org](https://git.bensuperpc.org) | | ||||
| | Jellyfin | Jellyfin for media server | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | | ||||
| | SyncThing | SyncThing for file synchronization | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | | ||||
| | Openssh | Openssh for ssh | [ssh.bensuperpc.org](https://ssh.bensuperpc.org) | | ||||
|  | ||||
| You can disable some services by removing the service name in PROFILES variable in the [Makefile](Makefile) file. | ||||
|  | ||||
| To enable the gitea CI: [how-to-build-docker-containers-using-gitea-runners](https://medium.com/@lokanx/how-to-build-docker-containers-using-gitea-runners-600729555e07) | ||||
|  | ||||
| ### Homepage | ||||
|  | ||||
| You can change the homepage config in these files: | ||||
|  | ||||
| - [bookmarks.yaml](infrastructure/services/homepage/config/bookmarks.yaml) | ||||
| - [services.yaml](infrastructure/services/homepage/config/services.yaml) | ||||
| - [settings.yaml](infrastructure/services/homepage/config/settings.yaml) | ||||
| - [widgets.yaml](infrastructure/services/homepage/config/widgets.yaml) | ||||
|  | ||||
| ### Forgejo | ||||
|  | ||||
| Once the installation is complete, you need to set the installation lock: | ||||
|  | ||||
| ```sh | ||||
| FORGEJO__security__INSTALL_LOCK=true | ||||
| ``` | ||||
|  | ||||
| ### Forgejo Runner | ||||
|  | ||||
| ```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 | ||||
|  | ||||
| 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                                                                                                | | ||||
| | ------------ | ---------------------------------------------------------------------------------------------------------- | | ||||
| | public_data  | Public data reachable on internet via [dufs.bensuperpc.org](https://dufs.bensuperpc.org), can be disabled. | | ||||
| | private_data | Private data                                                                                               | | ||||
|  | ||||
| ### SSH access | ||||
|  | ||||
| The default port for ssh/rsync is is 2222. | ||||
|  | ||||
| You can access to the server with: | ||||
|  | ||||
| ```sh | ||||
| ssh -p 2222 admin@bensuperpc.org | ||||
| ``` | ||||
|  | ||||
| ## Sources | ||||
| ## Build with | ||||
|  | ||||
| - [Wordpress](https://wordpress.org/) | ||||
| - [Gnu Make](https://www.gnu.org/software/make/) | ||||
| @@ -363,31 +181,8 @@ ssh -p 2222 admin@bensuperpc.org | ||||
| - [Docker Hub](https://hub.docker.com/) | ||||
| - [How To Start WordPress with Caddy using Docker Compose](https://minhcung.me/how-to-start-wordpress-with-caddy-using-docker-compose-3d31bb9ef88b) | ||||
| - [Digital Ocean - How To Install WordPress with Docker Compose (nginx)](https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose) | ||||
| - [Imagisphe](https://imagisphe.re/) | ||||
| - [Letsencrypt](https://letsencrypt.org/) | ||||
| - [Caddy](https://caddyserver.com/) | ||||
| - [Adminer](https://www.adminer.org/) | ||||
| - [Uptime Kuma](https://uptime-kuma.com/) | ||||
| - [qbittorrent](https://www.qbittorrent.org/) | ||||
| - [Transmission](https://transmissionbt.com/) | ||||
| - [Gitea](https://gitea.io/) | ||||
| - [Jellyfin](https://jellyfin.org/) | ||||
| - [SyncThing](https://syncthing.net/) | ||||
| - [PsiTransfer](https://psitransfer.com/) | ||||
| - [It-tools](https://github.com/CorentinTh/it-tools) | ||||
| - [Omni-tools](https://github.com/iib0011/omni-tools) | ||||
| - [Privatebin](https://github.com/PrivateBin/PrivateBin) | ||||
| - [ghost](https://ghost.org) | ||||
| - [Homepage Tuto](https://belginux.com/installer-homepage-avec-docker/) | ||||
| - [ProjectSend](https://www.projectsend.org/) | ||||
| - [Picoshare](https://github.com/mtlynch/picoshare) | ||||
| - [Dufs](https://github.com/sigoden/dufs) | ||||
| - [demos](https://github.com/usememos/memos) | ||||
| - [Stirling PDF](https://github.com/Stirling-Tools/Stirling-PDF) | ||||
| - [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) | ||||
| - [Forgejo-runner](https://code.forgejo.org/forgejo/runner) | ||||
| - [Forgejo-runner](https://huijzer.xyz/posts/55) | ||||
|  | ||||
| ## License | ||||
|  | ||||
|   | ||||
							
								
								
									
										15
									
								
								caddy/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								caddy/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| { | ||||
| 	email bensuperpc@gmail.com | ||||
| 	key_type p384 | ||||
|  | ||||
| 	log { | ||||
| 		output file /data/logs/access.log | ||||
| 		format console | ||||
| 	} | ||||
| } | ||||
|  | ||||
| import bensuperpc.org/Caddyfile | ||||
| import bensuperpc.com/Caddyfile | ||||
| import bensuperpc.net/Caddyfile | ||||
| import bensuperpc.ovh/Caddyfile | ||||
| import bensuperpc.fr/Caddyfile | ||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.com/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.com/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.com {   | ||||
|   	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.com {   | ||||
|   	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.fr/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.fr/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.fr { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.fr { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.net/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.net/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.net { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.net { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
							
								
								
									
										101
									
								
								caddy/bensuperpc.org/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										101
									
								
								caddy/bensuperpc.org/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,101 @@ | ||||
| www.bensuperpc.org { | ||||
| 	root * /var/www/html | ||||
| 	php_fastcgi wordpress:9000 | ||||
|  | ||||
| 	file_server | ||||
| 	encode zstd gzip | ||||
|  | ||||
| 	# metrics /metrics | ||||
|  | ||||
| 	@disallowed { | ||||
| 		path /xmlrpc.php | ||||
| 		path *.sql | ||||
| 		path /wp-content/uploads/*.php | ||||
| 	} | ||||
|  | ||||
| 	rewrite @disallowed '/index.php' | ||||
|  | ||||
| 	respond /uploads/*.php 404 | ||||
|  | ||||
| 	header { | ||||
| 		# disable FLoC tracking | ||||
| 		Permissions-Policy interest-cohort=() | ||||
|  | ||||
| 		# enable HSTS | ||||
| 		Strict-Transport-Security max-age=31536000; | ||||
|  | ||||
| 		# disable clients from sniffing the media type | ||||
| 		X-Content-Type-Options nosniff | ||||
|  | ||||
| 		# clickjacking protection | ||||
| 		X-Frame-Options DENY | ||||
|  | ||||
| 		# Disable powerful features we don't need | ||||
|         Permissions-Policy "geolocation=(), camera=(), microphone=() interest-cohort=()" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| bensuperpc.org { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| adminer.bensuperpc.org { | ||||
| 	reverse_proxy adminer:8080 | ||||
| } | ||||
|  | ||||
| uptimekuma.bensuperpc.org { | ||||
| 	reverse_proxy uptime-kuma:3001 | ||||
| } | ||||
|  | ||||
| torrent.bensuperpc.org { | ||||
| 	reverse_proxy qbittorrent:8080 | ||||
| } | ||||
|  | ||||
| git.bensuperpc.org { | ||||
| 	reverse_proxy gitea:3000 | ||||
| } | ||||
|  | ||||
| jellyfin.bensuperpc.org { | ||||
| 	reverse_proxy jellyfin:8096 | ||||
| } | ||||
|  | ||||
| ssh.bensuperpc.org { | ||||
| 	reverse_proxy openssh:2222 | ||||
| } | ||||
|  | ||||
| syncthing.bensuperpc.org { | ||||
| 	reverse_proxy syncthing:8384 { | ||||
| 		header_up Host {upstream_hostport} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| dns.bensuperpc.org { | ||||
| 	reverse_proxy dns-server:5380 | ||||
| } | ||||
|  | ||||
| link.bensuperpc.org { | ||||
| 	# TODO: Use service with database | ||||
| 	# Friendly links | ||||
| 	redir /gnous https://gnous.eu permanent | ||||
| 	redir /proxy https://imagisphe.re permanent | ||||
| 	redir /patch https://spaceint.fr permanent | ||||
| 	redir /greep https://greep.fr permanent | ||||
|  | ||||
| 	# Youtube links | ||||
| 	redir /rickroll https://www.youtube.com/watch?v=dQw4w9WgXcQ permanent | ||||
| 	redir /babyshark https://www.youtube.com/watch?v=XqZsoesa55w permanent | ||||
| 	redir /cowcowcow https://www.youtube.com/watch?v=FavUpD_IjVY permanent | ||||
| 	redir /badapple https://www.youtube.com/watch?v=FtutLA63Cp8 permanent | ||||
| 	redir /macdo https://www.youtube.com/watch?v=Q16KpquGsIc permanent | ||||
| 	redir /superiser https://www.youtube.com/watch?v=srnyVw-OR0g permanent | ||||
| 	redir /daicon https://youtu.be/-840keiiFDE?si=zIPIokytxcnGw5fJ&t=162 permanent | ||||
| 	redir /scp https://www.youtube.com/watch?v=FGCDndN20G8 permanent | ||||
| 	redir /scpfb https://youtu.be/9zrKk-1E8zM?si=8R_ZBVG3GzMUYOe8&t=36 permanent | ||||
| 	redir /mother https://youtu.be/w3NyycHR3fE?si=rNNSW9zYv0bcO2Eu permanent | ||||
| 	redir /cpu https://www.youtube.com/watch?v=y39D4529FM4 permanent | ||||
| 	redir /chanteur https://youtu.be/HXdP15Ubu6M?si=N0qvhqo--3pmSGmb permanent | ||||
| 	redir /bna https://youtu.be/3T3ofoKfEoY?si=_7HkGQXMC7rBng8O permanent | ||||
| 	redir /jojo https://youtu.be/U0TXIXTzJEY?si=2acWJWX06ju2w4uj permanent | ||||
| 	redir /patapon https://youtu.be/H6CbNHLHkmk?si=ZvU8SzrOK-oCUXT5 permanent | ||||
| 	redir /darkwater https://youtu.be/Tr8ZgF4Dc0E?si=CEOmm2J6Jp5rdbbt permanent | ||||
| } | ||||
							
								
								
									
										7
									
								
								caddy/bensuperpc.ovh/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								caddy/bensuperpc.ovh/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| bensuperpc.ovh { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
|  | ||||
| www.bensuperpc.ovh { | ||||
| 	redir https://www.bensuperpc.org{uri} permanent | ||||
| } | ||||
| @@ -1 +0,0 @@ | ||||
| DOCKER_PROFILES += 7daystodie_server 7daystodie_backup | ||||
| @@ -1,2 +0,0 @@ | ||||
| DOCKER_PROFILES += forgejo forgejo-runner | ||||
| # DOCKER_PROFILES += gitea gitea-runner | ||||
| @@ -1 +0,0 @@ | ||||
| DOCKER_PROFILES += minecraft_server minecraft_backup | ||||
| @@ -1 +0,0 @@ | ||||
| DOCKER_PROFILES += satisfactory_server satisfactory_backup | ||||
| @@ -1,2 +0,0 @@ | ||||
| DOCKER_PROFILES += teamfortress2_server | ||||
| # teamfortress2_backup | ||||
| @@ -1,3 +0,0 @@ | ||||
| DOCKER_PROFILES += main_infrastructure caddy | ||||
| DOCKER_PROFILES += qbittorrent | ||||
| # transmission | ||||
							
								
								
									
										19
									
								
								docker-compose.adminer.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								docker-compose.adminer.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Adminer | ||||
|   adminer: | ||||
|     image: adminer:latest | ||||
|     container_name: adminer | ||||
|     profiles: | ||||
|       - adminer | ||||
|     restart: on-failure | ||||
|     env_file:  | ||||
|       - env/adminer.env | ||||
|     depends_on: | ||||
|       - wordpress_db | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
							
								
								
									
										35
									
								
								docker-compose.backup.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								docker-compose.backup.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,35 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Backup | ||||
|   backup: | ||||
|     image: offen/docker-volume-backup:latest | ||||
|     container_name: backup | ||||
|     profiles: | ||||
|       - backup | ||||
|     restart: on-failure | ||||
|     env_file: | ||||
|       - env/backup.env | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock:ro | ||||
|       - backup:/archive | ||||
|       - caddy_data:/backup/caddy_data:ro | ||||
|       - caddy_config:/backup/caddy_config:ro | ||||
| #      - gitea_data:/backup/gitea_data:ro | ||||
| #      - gitea_config:/backup/gitea_config:ro | ||||
| #      - wordpress_db:/backup/wordpress_db:ro | ||||
| #      - wordpress:/backup/wordpress:ro | ||||
| #      - jellyfin_config:/backup/jellyfin_config:ro | ||||
| #      - jellyfin_data:/backup/jellyfin_data:ro | ||||
| #      - jellyfin_cache:/backup/jellyfin_cache:ro | ||||
| #      - qbittorrent_config:/backup/qbittorrent_config:ro | ||||
| #      - qbittorrent_data:/backup/qbittorrent_data:ro | ||||
| #      - uptimekuma_data:/backup/uptimekuma_data:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   backup: | ||||
|     name: backup | ||||
							
								
								
									
										46
									
								
								docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,46 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Caddy | ||||
|   caddy: | ||||
|     image: caddy:latest | ||||
|     container_name: caddy | ||||
|     profiles: | ||||
|       - caddy | ||||
|     restart: on-failure | ||||
|     ports: | ||||
|       - 80:80 | ||||
|       - 443:443 | ||||
|     volumes: | ||||
|       - wordpress:/var/www/html:rw | ||||
|       - caddy_data:/data:rw | ||||
|       - caddy_config:/config:rw | ||||
|       - ./caddy:/etc/caddy:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     env_file: | ||||
|       - env/caddy.env | ||||
|     cap_add: | ||||
|       - NET_ADMIN | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     #    cap_drop: | ||||
|     #      - ALL | ||||
|     #    cap_add: | ||||
|     #      - CHOWN | ||||
|     #      - FOWNER | ||||
|     #      - DAC_OVERRIDE | ||||
|     #      - SETGID | ||||
|     #      - SETUID | ||||
|     #      - NET_BIND_SERVICE | ||||
|     healthcheck: | ||||
|       test: pidof caddy || exit 1 | ||||
|       interval: 120s | ||||
|       timeout: 10s | ||||
|       retries: 3 | ||||
|  | ||||
| volumes: | ||||
|   caddy_data: | ||||
|     name: caddy_data | ||||
|   caddy_config: | ||||
|     name: caddy_config | ||||
							
								
								
									
										23
									
								
								docker-compose.dns.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								docker-compose.dns.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   dns-server: | ||||
|     container_name: dns-server | ||||
|     hostname: dns-server | ||||
|     profiles: | ||||
|       - dns-server | ||||
|     image: technitium/dns-server:latest | ||||
|     restart: on-failure | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     volumes: | ||||
|       - dns-config:/etc/dns | ||||
|     env_file: | ||||
|       - env/technitium.env | ||||
|  | ||||
| volumes: | ||||
|   dns-config: | ||||
|     name: dns-config | ||||
|  | ||||
| @@ -1,3 +1,5 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Gitea | ||||
|   gitea: | ||||
| @@ -5,19 +7,16 @@ services: | ||||
|     container_name: gitea | ||||
|     profiles: | ||||
|       - gitea | ||||
|     restart: on-failure:5 | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - database_gitea | ||||
|       - caddy | ||||
|     ports: | ||||
|       - "5555:5555" | ||||
|     env_file: | ||||
|       - ./env/gitea.env | ||||
|       - env/gitea.env | ||||
|     volumes: | ||||
|       - gitea_data:/var/lib/gitea | ||||
|       - gitea_config:/etc/gitea | ||||
|       - /etc/timezone:/etc/timezone:ro | ||||
|       - /etc/localtime:/etc/localtime:ro | ||||
| #      - /etc/timezone:/etc/timezone:ro | ||||
| #      - /etc/localtime:/etc/localtime:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
| @@ -28,40 +27,21 @@ services: | ||||
|     image: mariadb:latest | ||||
|     container_name: database_gitea | ||||
|     profiles: | ||||
|       - database | ||||
|       - gitea | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|       - gitea | ||||
|     restart: on-failure | ||||
|     volumes: | ||||
|       - gitea_db:/var/lib/mysql:rw | ||||
|     env_file: | ||||
|       - ./env/gitea_db.env | ||||
|       - env/gitea_db.env | ||||
|     command: '--default-authentication-plugin=mysql_native_password' | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| 
 | ||||
|   # Gitea-runner | ||||
|   gitea-runner: | ||||
|     image: gitea/act_runner:latest | ||||
|     container_name: gitea-runner | ||||
|     profiles: | ||||
|       - gitea-runner | ||||
|     depends_on: | ||||
|       - gitea | ||||
|     restart: on-failure:5 | ||||
|     env_file: | ||||
|       - ./env/gitea-runner.env | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock | ||||
|       - gitea_runner:/data | ||||
|       - ./config/gitea_runner/config.yaml:/config.yaml:ro | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| 
 | ||||
| volumes: | ||||
|   gitea_data: | ||||
|     name: gitea_data | ||||
| @@ -69,5 +49,3 @@ volumes: | ||||
|     name: gitea_config | ||||
|   gitea_db: | ||||
|     name: gitea_db | ||||
|   gitea_runner: | ||||
|     name: gitea_runner | ||||
							
								
								
									
										28
									
								
								docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,28 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Jellyfin | ||||
|   jellyfin: | ||||
|     image: jellyfin/jellyfin:latest | ||||
|     container_name: jellyfin | ||||
|     profiles: | ||||
|       - jellyfin | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     volumes: | ||||
|       - jellyfin_config:/config | ||||
|       - jellyfin_data:/movies:ro | ||||
|       - jellyfin_cache:/cache | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   jellyfin_config: | ||||
|     name: jellyfin_config | ||||
|   jellyfin_data: | ||||
|     name: jellyfin_data | ||||
|   jellyfin_cache: | ||||
|     name: jellyfin_cache | ||||
							
								
								
									
										6
									
								
								docker-compose.networks.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								docker-compose.networks.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| networks: | ||||
|   infra-network: | ||||
|     driver: bridge | ||||
|     name: infra-network | ||||
							
								
								
									
										25
									
								
								docker-compose.openssh.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								docker-compose.openssh.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Openssh | ||||
|   openssh: | ||||
|     image: linuxserver/openssh-server:latest | ||||
|     container_name: openssh | ||||
|     profiles: | ||||
|       - openssh | ||||
|     restart: on-failure | ||||
|     env_file: | ||||
|       - env/openssh.env | ||||
|     volumes: | ||||
|       - openssh_config:/config | ||||
|       - openssh_data:/data | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   openssh_config: | ||||
|     name: openssh_config | ||||
|   openssh_data: | ||||
|     name: openssh_data | ||||
| @@ -1,3 +1,5 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # qBittorrent | ||||
|   qbittorrent: | ||||
| @@ -5,21 +7,14 @@ services: | ||||
|     container_name: qbittorrent | ||||
|     profiles: | ||||
|       - qbittorrent | ||||
|     restart: on-failure:5 | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./env/qbittorrent.env | ||||
|     environment: | ||||
|       - PUID=${PUID:-1000} | ||||
|       - PGID=${PGID:-1000} | ||||
|     ports: | ||||
|       - 6881:6881 | ||||
|       - 6881:6881/udp | ||||
|       - env/qbittorrent.env | ||||
|     volumes: | ||||
|       - qbittorrent_config:/config | ||||
|       - public_data:/downloads | ||||
|       - private_data:/private_downloads | ||||
|       - qbittorrent_data:/downloads | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
| @@ -28,7 +23,5 @@ services: | ||||
| volumes: | ||||
|   qbittorrent_config: | ||||
|     name: qbittorrent_config | ||||
|   public_data: | ||||
|     name: public_data | ||||
|   private_data: | ||||
|     name: private_data | ||||
|   qbittorrent_data: | ||||
|     name: qbittorrent_data | ||||
| @@ -1,3 +1,5 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # syncthing | ||||
|   syncthing: | ||||
| @@ -5,18 +7,12 @@ services: | ||||
|     container_name: syncthing | ||||
|     profiles: | ||||
|       - syncthing | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     restart: on-failure | ||||
|     env_file: | ||||
|       - ./env/syncthing.env | ||||
|     environment: | ||||
|       - PUID=${PUID:-1000} | ||||
|       - PGID=${PGID:-1000} | ||||
|       - env/syncthing.env | ||||
|     volumes: | ||||
|       - syncthing_config:/config | ||||
|       - public_data:/data1 | ||||
|       - private_data:/data2 | ||||
|       - syncthing_data:/data1 | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
| @@ -25,7 +21,5 @@ services: | ||||
| volumes: | ||||
|   syncthing_config: | ||||
|     name: syncthing_config | ||||
|   public_data: | ||||
|     name: public_data | ||||
|   private_data: | ||||
|     name: private_data | ||||
|   syncthing_data: | ||||
|     name: syncthing_data | ||||
| @@ -1,3 +1,5 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Uptime Kuma | ||||
|   uptime-kuma: | ||||
| @@ -7,16 +9,8 @@ services: | ||||
|       - uptime-kuma | ||||
|     volumes: | ||||
|       - uptimekuma_data:/app/data | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     cap_drop: | ||||
|       - SYS_ADMIN | ||||
| 
 | ||||
| volumes: | ||||
|   uptimekuma_data: | ||||
|     name: uptimekuma_data | ||||
							
								
								
									
										5
									
								
								docker-compose.volumes.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								docker-compose.volumes.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| volumes: | ||||
|   uptimekuma_data: | ||||
|     name: uptimekuma_data | ||||
							
								
								
									
										16
									
								
								docker-compose.watchtower.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								docker-compose.watchtower.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | ||||
| version: '3.9' | ||||
|  | ||||
| services: | ||||
|   # Watchtower | ||||
|   watchtower: | ||||
|     image: containrrr/watchtower | ||||
|     container_name: watchtower | ||||
|     profiles: | ||||
|       - watchtower | ||||
|     restart: on-failure | ||||
|     networks: | ||||
|       - infra-network | ||||
|     volumes: | ||||
|       - /var/run/docker.sock:/var/run/docker.sock:rw | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| @@ -1,3 +1,5 @@ | ||||
| version: '3.9' | ||||
| 
 | ||||
| services: | ||||
|   # Wordpress | ||||
|   wordpress: | ||||
| @@ -5,12 +7,12 @@ services: | ||||
|     container_name: wordpress | ||||
|     profiles: | ||||
|       - wordpress | ||||
|     restart: on-failure:5 | ||||
|     restart: on-failure | ||||
|     depends_on: | ||||
|       - wordpress_db | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./env/wordpress.env | ||||
|       - env/wordpress.env | ||||
|     volumes: | ||||
|       - ./config/wordpress/php.ini:/usr/local/etc/php/conf.d/custom.ini:ro | ||||
|       - wordpress:/var/www/html:rw | ||||
| @@ -28,41 +30,19 @@ services: | ||||
|       - wordpress | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     restart: on-failure | ||||
|     volumes: | ||||
|       - wordpress_db:/var/lib/mysql:rw | ||||
|     env_file: | ||||
|       - ./env/wordpress_db.env | ||||
|       - env/wordpress_db.env | ||||
|     command: '--default-authentication-plugin=mysql_native_password' | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
| 
 | ||||
|   wordpress_backup: | ||||
|     image: mazzolino/restic:latest | ||||
|     container_name: wordpress_backup | ||||
|     profiles: | ||||
|       - wordpress | ||||
|     depends_on: | ||||
|       - wordpress | ||||
|     restart: on-failure:5 | ||||
|     env_file: | ||||
|       - ./env/wordpress_backup.env | ||||
|     volumes: | ||||
|       - wordpress_backup:/mnt/restic | ||||
|       - wordpress_db:/data/wordpress_db:ro | ||||
|       - wordpress:/data/wordpress:ro | ||||
|     network_mode: none | ||||
|     cap_drop: | ||||
|       - NET_ADMIN | ||||
|       - NET_RAW | ||||
|       - SYS_ADMIN | ||||
| 
 | ||||
| volumes: | ||||
|   wordpress_db: | ||||
|     name: wordpress_db | ||||
|   wordpress: | ||||
|     name: wordpress | ||||
|   wordpress_backup: | ||||
|     name: wordpress_backup | ||||
|     name: wordpress | ||||
							
								
								
									
										4
									
								
								env/adminer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/adminer.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||
| ADMINER_DEFAULT_SERVER=wordpress_db | ||||
							
								
								
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| BACKUP_COMPRESSION="zst" | ||||
| BACKUP_CRON_EXPRESSION="0 2 * * *" | ||||
| # BACKUP_RETENTION_DAYS: '7' | ||||
| # BACKUP_FILENAME="backup-%Y-%m-%dT%H-%M-%S.{{ .Extension }}" | ||||
							
								
								
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| USER_UID=1000 | ||||
| USER_GID=1000 | ||||
| GITEA__database__DB_TYPE=mysql | ||||
| GITEA__database__HOST=database_gitea:3306 | ||||
| GITEA__database__NAME=gitea | ||||
| GITEA__database__USER=bensuperpc | ||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
							
								
								
									
										4
									
								
								env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | ||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MYSQL_USER=bensuperpc | ||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MYSQL_DATABASE=gitea | ||||
							
								
								
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
| PUBLIC_KEY= | ||||
| # PUBLIC_KEY_FILE= | ||||
| # PUBLIC_KEY_DIR= | ||||
| # PUBLIC_KEY_URL= | ||||
| SUDO_ACCESS=false | ||||
| PASSWORD_ACCESS=false | ||||
| # USER_PASSWORD= | ||||
| # USER_PASSWORD_FILE= | ||||
| # USER_NAME= | ||||
							
								
								
									
										5
									
								
								env/qbittorrent.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								env/qbittorrent.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
| TZ=Etc/UTC | ||||
| WEBUI_PORT=8080 | ||||
| TORRENTING_PORT=6881 | ||||
							
								
								
									
										2
									
								
								env/syncthing.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								env/syncthing.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| PUID=1000 | ||||
| PGID=1000 | ||||
							
								
								
									
										18
									
								
								env/technitium.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								env/technitium.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| DNS_SERVER_DOMAIN=dns-server | ||||
| DNS_SERVER_ADMIN_PASSWORD=fddsdfF548TjSNbi490fzZspmLSDf | ||||
| # DNS_SERVER_ADMIN_PASSWORD_FILE=password.txt | ||||
| # DNS_SERVER_PREFER_IPV6=false | ||||
| # DNS_SERVER_WEB_SERVICE_HTTP_PORT=5380 | ||||
| # DNS_SERVER_WEB_SERVICE_HTTPS_PORT=53443 | ||||
| # DNS_SERVER_WEB_SERVICE_ENABLE_HTTPS=true | ||||
| # DNS_SERVER_WEB_SERVICE_USE_SELF_SIGNED_CERT=false | ||||
| # DNS_SERVER_OPTIONAL_PROTOCOL_DNS_OVER_HTTP=true | ||||
| # DNS_SERVER_RECURSION=AllowOnlyForPrivateNetworks | ||||
| # DNS_SERVER_RECURSION_DENIED_NETWORKS=1.1.1.0/24 | ||||
| # DNS_SERVER_RECURSION_ALLOWED_NETWORKS=127.0.0.1, 192.168.1.0/24 | ||||
| # DNS_SERVER_ENABLE_BLOCKING=false | ||||
| # DNS_SERVER_ALLOW_TXT_BLOCKING_REPORT=false | ||||
| # DNS_SERVER_BLOCK_LIST_URLS= | ||||
| # DNS_SERVER_FORWARDERS=1.1.1.1, 8.8.8.8 | ||||
| # DNS_SERVER_FORWARDER_PROTOCOL=Tcp | ||||
| # DNS_SERVER_LOG_USING_LOCAL_TIME=true | ||||
| @@ -1,53 +0,0 @@ | ||||
| include: | ||||
| # Main | ||||
|   - services/main/docker-compose.main.yml  | ||||
| # WordPress | ||||
|   - services/wordpress/docker-compose.wordpress.yml | ||||
| # Caddy | ||||
|   - services/caddy/docker-compose.caddy.yml | ||||
| # Dufs | ||||
|   - services/dufs/docker-compose.dufs.yml | ||||
| # Gitea | ||||
|   - services/gitea/docker-compose.gitea.yml | ||||
| # Forgejo | ||||
|   - services/forgejo/docker-compose.forgejo.yml | ||||
| # Homepage | ||||
|   - services/homepage/docker-compose.homepage.yml | ||||
| # It-tools | ||||
|   - services/it-tools/docker-compose.it-tools.yml | ||||
| # omni-tools | ||||
|   - services/omni-tools/docker-compose.omni-tools.yml | ||||
| # cyberchef | ||||
|   - services/cyberchef/docker-compose.cyberchef.yml | ||||
| # Jellyfin | ||||
|   - services/jellyfin/docker-compose.jellyfin.yml | ||||
| # Openssh | ||||
|   - services/openssh/docker-compose.openssh.yml | ||||
| # Picoshare | ||||
|   - services/picoshare/docker-compose.picoshare.yml | ||||
| # Privatebin | ||||
|   - services/privatebin/docker-compose.privatebin.yml | ||||
| # Projectsend | ||||
|   - services/projectsend/docker-compose.projectsend.yml | ||||
| # Psitransfer | ||||
|   - services/psitransfer/docker-compose.psitransfer.yml | ||||
| # Qbittorrent | ||||
|   - services/qbittorrent/docker-compose.qbittorrent.yml | ||||
| # Stirlingpdf | ||||
|   - services/stirlingpdf/docker-compose.stirlingpdf.yml | ||||
| # Syncthing | ||||
|   - services/syncthing/docker-compose.syncthing.yml | ||||
| # Transmission | ||||
|   - services/transmission/docker-compose.transmission.yml | ||||
| # Uptime-kuma | ||||
|   - services/uptime-kuma/docker-compose.uptime-kuma.yml | ||||
| # open-webui | ||||
|   - services/open-webui/docker-compose.open-webui.yml | ||||
| # Minecraft | ||||
|   - services/minecraft-server/minecraft-server/docker-compose.yml | ||||
| # 7daystodie | ||||
|   - services/7daystodie-server/7daystodie-server/docker-compose.yml | ||||
| # Satisfactory | ||||
|   - services/satisfactory-server/satisfactory-server/docker-compose.yml | ||||
| # Team Fortress 2 | ||||
|   - services/teamfortress2-server/teamfortress2-server/docker-compose.yml | ||||
 Submodule infrastructure/services/7daystodie-server deleted from 71c33c6b1a
									
								
							| @@ -1,15 +0,0 @@ | ||||
| { | ||||
| 	email {$MAIL_DOMAIN} | ||||
| 	key_type p384 | ||||
|  | ||||
| 	log { | ||||
| 		output file /data/logs/access.log { | ||||
| 			roll_size 1GiB | ||||
| 			roll_keep 20 | ||||
| 			roll_keep_for 720h | ||||
| 		} | ||||
| 		format json | ||||
| 	} | ||||
| } | ||||
|  | ||||
| import website/* | ||||
| @@ -1,9 +0,0 @@ | ||||
| cyberchef.{$MAIN_DOMAIN} { | ||||
| 	# Load balance between 2 instances | ||||
| 	reverse_proxy { | ||||
| 		to cyberchef0:8000 cyberchef1:8000 | ||||
| 		lb_policy round_robin | ||||
| 		lb_retries 3 | ||||
| 		lb_try_interval 1s | ||||
| 	} | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| dufs.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy dufs:5000 | ||||
| } | ||||
| @@ -1,7 +0,0 @@ | ||||
| git.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy forgejo:3000 | ||||
| } | ||||
|  | ||||
| forgejo.{$MAIN_DOMAIN} { | ||||
| 	redir https://git.{$MAIN_DOMAIN}{uri} permanent | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| gitea.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy gitea:3000 | ||||
| } | ||||
| @@ -1,14 +0,0 @@ | ||||
| (header_common) { | ||||
| 	Permissions-Policy: geolocation=(), camera=(), microphone=(), clipboard-read=(), usb=() | ||||
| 	Strict-Transport-Security: max-age=31536000; includeSubDomains | ||||
| 	X-Content-Type-Options: nosniff | ||||
| 	X-Frame-Options: DENY | ||||
| 	Referrer-Policy: strict-origin-when-cross-origin | ||||
| 	# Only useful for old browsers | ||||
| 	X-XSS-Protection: "1; mode=block" | ||||
|  | ||||
| 	# Can cause issues with external resources | ||||
| 	#Cross-Origin-Embedder-Policy: require-corp | ||||
| 	Cross-Origin-Opener-Policy: same-origin | ||||
| 	#Cross-Origin-Resource-Policy: same-origin | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| homepage.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy homepage:3000 | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| it-tools.{$MAIN_DOMAIN} { | ||||
| 	# Load balance between 2 instances | ||||
| 	reverse_proxy { | ||||
| 		to it-tools0:8080 it-tools1:8080 | ||||
| 		lb_policy round_robin | ||||
| 		lb_retries 3 | ||||
| 		lb_try_interval 1s | ||||
| 	} | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| jellyfin.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy jellyfin:8096 | ||||
| } | ||||
| @@ -1,27 +0,0 @@ | ||||
| www.{$MAIN_DOMAIN} { | ||||
| 	header { | ||||
| 		Cache-Control "public, max-age=10" | ||||
| 		import header_common | ||||
| 	} | ||||
|  | ||||
| 	handle_errors { | ||||
| 		@notFound expression `{http.error.status_code} == 404` | ||||
| 		redir @notFound https://www.{$MAIN_DOMAIN} permanent | ||||
| 	} | ||||
|  | ||||
| 	reverse_proxy homepage:3000 | ||||
| } | ||||
|  | ||||
| {$MAIN_DOMAIN} { | ||||
| 	redir https://www.{host}{uri} permanent | ||||
| } | ||||
|  | ||||
| public.{$MAIN_DOMAIN} { | ||||
| 	root * /public_data | ||||
| 	file_server browse | ||||
|  | ||||
| 	header / { | ||||
| 		Cache-Control "no-store" | ||||
| 		import header_common | ||||
| 	} | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| memos.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy memos:5230 | ||||
| } | ||||
| @@ -1,9 +0,0 @@ | ||||
| omni-tools.{$MAIN_DOMAIN} { | ||||
| 	# Load balance between 2 instances | ||||
| 	reverse_proxy { | ||||
| 		to omni-tools0:80 omni-tools1:80 | ||||
| 		lb_policy round_robin | ||||
| 		lb_retries 3 | ||||
| 		lb_try_interval 1s | ||||
| 	} | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| open-webui.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy open-webui:8080 | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| picoshare.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy picoshare:4001 | ||||
| } | ||||
| @@ -1,7 +0,0 @@ | ||||
| privatebin.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy privatebin:8080 | ||||
| } | ||||
|  | ||||
| pastebin.{$MAIN_DOMAIN} { | ||||
| 	redir https://privatebin.{$MAIN_DOMAIN} permanent | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| projectsend.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy projectsend:80 | ||||
| } | ||||
| @@ -1,7 +0,0 @@ | ||||
| transfer.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy psitransfer:3000 | ||||
| } | ||||
|  | ||||
| psitransfer.{$MAIN_DOMAIN} { | ||||
| 	redir https://transfer.{$MAIN_DOMAIN}{uri} permanent | ||||
| } | ||||
| @@ -1,11 +0,0 @@ | ||||
| torrent.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy qbittorrent:8080 | ||||
| 	header { | ||||
| 		Cache-Control "no-store" | ||||
| 		import header_common | ||||
| 	} | ||||
| } | ||||
|  | ||||
| qbittorrent.{$MAIN_DOMAIN} { | ||||
| 	redir https://torrent.{$MAIN_DOMAIN} permanent | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| stirlingpdf.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy stirlingpdf:8080 | ||||
| } | ||||
| @@ -1,5 +0,0 @@ | ||||
| syncthing.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy syncthing:8384 { | ||||
| 		header_up Host {upstream_hostport} | ||||
| 	} | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| transmission.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy transmission:9091 | ||||
| } | ||||
| @@ -1,3 +0,0 @@ | ||||
| uptimekuma.{$MAIN_DOMAIN} { | ||||
| 	reverse_proxy uptime-kuma:3001 | ||||
| } | ||||
| @@ -1,34 +0,0 @@ | ||||
| wordpress.{$MAIN_DOMAIN} { | ||||
| 	root * /var/www/html | ||||
| 	php_fastcgi wordpress:9000 | ||||
|  | ||||
| 	file_server | ||||
| 	encode zstd gzip | ||||
|  | ||||
| 	@disallowed { | ||||
| 		path /xmlrpc.php | ||||
| 		path *.sql | ||||
| 		path /wp-content/uploads/*.php | ||||
| 	} | ||||
|  | ||||
| 	rewrite @disallowed '/index.php' | ||||
|  | ||||
| 	respond /uploads/*.php 404 | ||||
|  | ||||
| 	header { | ||||
| 		# disable FLoC tracking | ||||
| 		Permissions-Policy interest-cohort=() | ||||
|  | ||||
| 		# enable HSTS | ||||
| 		Strict-Transport-Security max-age=31536000; | ||||
|  | ||||
| 		# disable clients from sniffing the media type | ||||
| 		X-Content-Type-Options nosniff | ||||
|  | ||||
| 		# clickjacking protection | ||||
| 		# X-Frame-Options DENY | ||||
|  | ||||
| 		# Disable powerful features we don't need | ||||
| 		Permissions-Policy "geolocation=(), camera=(), microphone=() interest-cohort=()" | ||||
| 	} | ||||
| } | ||||
| @@ -1,65 +0,0 @@ | ||||
| services: | ||||
|   # Caddy | ||||
|   caddy: | ||||
|     image: bensuperpc/caddy-l4:latest | ||||
|     container_name: caddy | ||||
|     profiles: | ||||
|       - caddy | ||||
|     depends_on: | ||||
|       main_infrastructure: | ||||
|         condition: service_completed_successfully | ||||
|     restart: on-failure:5 | ||||
|     ports: | ||||
|       - 80:80/tcp | ||||
|       - 80:80/udp | ||||
|       - 443:443/tcp | ||||
|       - 443:443/udp | ||||
|     volumes: | ||||
|       - caddy_data:/data:rw | ||||
|       - caddy_config:/config:rw | ||||
|       - ./config:/etc/caddy:ro | ||||
|       - wordpress:/var/www/html:rw | ||||
|       - public_data:/public_data:ro | ||||
|  | ||||
|     networks: | ||||
|       - infra-network | ||||
|     env_file: | ||||
|       - ./env/caddy.env | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     healthcheck: | ||||
|       test: pidof caddy || exit 1 | ||||
|       interval: 120s | ||||
|       timeout: 10s | ||||
|       retries: 3 | ||||
|  | ||||
|   caddy_backup: | ||||
|     image: mazzolino/restic:latest | ||||
|     container_name: caddy_backup | ||||
|     profiles: | ||||
|       - caddy | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     restart: on-failure:5 | ||||
|     env_file: | ||||
|       - ./env/caddy_backup.env | ||||
|     volumes: | ||||
|       - caddy_backup:/mnt/restic | ||||
|       - caddy_data:/data:ro | ||||
|     network_mode: none | ||||
|     cap_drop: | ||||
|       - NET_ADMIN | ||||
|       - NET_RAW | ||||
|       - SYS_ADMIN | ||||
|  | ||||
| volumes: | ||||
|   caddy_data: | ||||
|     name: caddy_data | ||||
|   caddy_config: | ||||
|     name: caddy_config | ||||
|   caddy_backup: | ||||
|     name: caddy_backup | ||||
|   wordpress: | ||||
|     name: wordpress | ||||
|   public_data: | ||||
|     name: public_data | ||||
							
								
								
									
										2
									
								
								infrastructure/services/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								infrastructure/services/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | ||||
| MAIN_DOMAIN=bensuperpc.org | ||||
| MAIL_DOMAIN=bensuperpc@gmail.com | ||||
| @@ -1,14 +0,0 @@ | ||||
| #RUN_ON_STARTUP=true | ||||
| RESTIC_REPOSITORY=/mnt/restic | ||||
| RESTIC_BACKUP_SOURCES=/data | ||||
| RESTIC_PASSWORD=YFQh8v3Wi95v0p6h88D4u8C8z4gLfdMw | ||||
| # Backup (exuclusive with Check and Prune) | ||||
| BACKUP_CRON=*/30 * * * * | ||||
| RESTIC_BACKUP_ARGS=--tag docker-volumes --verbose | ||||
| #RESTIC_FORGET_ARGS=--prune --keep-last 8 --keep-daily 7 --keep-weekly 5 --keep-monthly 12 --keep-yearly 4 | ||||
| # Check (exuclusive with Check and Prune) | ||||
| #CHECK_CRON=*/30 * * * * | ||||
| #RESTIC_CHECK_ARGS=--read-data-subset=40% | ||||
| # Prune (exuclusive with Check and Prune) | ||||
| #PRUNE_CRON=*/30 * * * * | ||||
| #RESTIC_PRUNE_ARGS= | ||||
| @@ -1,51 +0,0 @@ | ||||
| services: | ||||
|   # cyberchef | ||||
|   cyberchef0: | ||||
|     image: mpepping/cyberchef:latest | ||||
|     container_name: cyberchef0 | ||||
|     profiles: | ||||
|       - cyberchef | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     read_only: false | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     cap_drop: | ||||
|       - SYS_ADMIN | ||||
|  | ||||
|     deploy: | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.5' | ||||
|           memory: 512M | ||||
|         reservations: | ||||
|           cpus: '0.001' | ||||
|           memory: 20M | ||||
|  | ||||
|   cyberchef1: | ||||
|     image: mpepping/cyberchef:latest | ||||
|     container_name: cyberchef1 | ||||
|     profiles: | ||||
|       - cyberchef | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     read_only: false | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     cap_drop: | ||||
|       - SYS_ADMIN | ||||
|  | ||||
|     deploy: | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.5' | ||||
|           memory: 512M | ||||
|         reservations: | ||||
|           cpus: '0.001' | ||||
|           memory: 20M | ||||
| @@ -1,25 +0,0 @@ | ||||
| services: | ||||
|   # dufs | ||||
|   dufs: | ||||
|     image: sigoden/dufs:latest | ||||
|     container_name: dufs | ||||
|     profiles: | ||||
|       - dufs | ||||
|     user: ${PUID:-1000}:${PGID:-1000}  | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./env/dufs.env | ||||
|     volumes: | ||||
|       - public_data:/data | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   public_data: | ||||
|     name: public_data | ||||
|   private_data: | ||||
|     name: private_data | ||||
							
								
								
									
										7
									
								
								infrastructure/services/dufs/env/dufs.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										7
									
								
								infrastructure/services/dufs/env/dufs.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +0,0 @@ | ||||
| DUFS_BIND=0.0.0.0 | ||||
| DUFS_PORT=5000 | ||||
| DUFS_SERVE_PATH=/data | ||||
| DUFS_HIDDEN=tmp,*.log,*.lock | ||||
| DUFS_ALLOW_ALL=true | ||||
| DUFS_COMPRESS=medium | ||||
| DUFS_AUTH="admin:heqihlOfBmJDESGFlpbPi7P7Mi6F7RkV@/:rw|@/:ro" | ||||
| @@ -1,96 +0,0 @@ | ||||
| services: | ||||
|   # forgejo | ||||
|   forgejo: | ||||
|     image: codeberg.org/forgejo/forgejo:12-rootless | ||||
|     container_name: forgejo | ||||
|     profiles: | ||||
|       - forgejo | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - database_forgejo | ||||
|       - caddy | ||||
|     ports: | ||||
|       - "22:2222" | ||||
|     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 | ||||
|     user: ${PUID:-1000}:${PGID:-1000}  | ||||
|     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-runner | ||||
|     privileged: true | ||||
|     environment: | ||||
|       DOCKER_TLS_CERTDIR: /certs | ||||
|       DOCKER_HOST: docker-in-docker | ||||
|     volumes: | ||||
|       - forgejo_certs:/certs | ||||
|  | ||||
|   forgejo_runner: | ||||
|     image: data.forgejo.org/forgejo/runner:9 | ||||
|     networks: | ||||
|       - infra-network | ||||
|     profiles: | ||||
|       - forgejo-runner | ||||
|     links: | ||||
|       - docker-in-docker | ||||
|     depends_on: | ||||
|       docker-in-docker: | ||||
|         condition: service_started | ||||
|     container_name: 'forgejo_runner' | ||||
|     env_file: | ||||
|       - ./env/forgejo_runner.env | ||||
|     user: ${PUID:-1000}:${PGID:-1000}  | ||||
|     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 | ||||
							
								
								
									
										25
									
								
								infrastructure/services/forgejo/env/forgejo.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										25
									
								
								infrastructure/services/forgejo/env/forgejo.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,25 +0,0 @@ | ||||
| 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=Bensuperpc's Forgejo | ||||
| 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=2222 | ||||
| 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 | ||||
| @@ -1,4 +0,0 @@ | ||||
| MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MARIADB_DATABASE=forgejo | ||||
| @@ -1,3 +0,0 @@ | ||||
| DOCKER_HOST=tcp://docker:2376 | ||||
| DOCKER_CERT_PATH=/certs/client | ||||
| DOCKER_TLS_VERIFY=1 | ||||
| @@ -1,98 +0,0 @@ | ||||
| # Example configuration file, it's safe to copy this as the default config file without any modification. | ||||
|  | ||||
| # You don't have to copy this file to your instance, | ||||
| # just run `./act_runner generate-config > config.yaml` to generate a config file. | ||||
|  | ||||
| log: | ||||
|   # The level of logging, can be trace, debug, info, warn, error, fatal | ||||
|   level: info | ||||
|  | ||||
| runner: | ||||
|   # Where to store the registration result. | ||||
|   file: .runner | ||||
|   # Execute how many tasks concurrently at the same time. | ||||
|   capacity: 1 | ||||
|   # Extra environment variables to run jobs. | ||||
|   envs: | ||||
|     A_TEST_ENV_NAME_1: a_test_env_value_1 | ||||
|     A_TEST_ENV_NAME_2: a_test_env_value_2 | ||||
|   # Extra environment variables to run jobs from a file. | ||||
|   # It will be ignored if it's empty or the file doesn't exist. | ||||
|   env_file: .env | ||||
|   # The timeout for a job to be finished. | ||||
|   # Please note that the Gitea instance also has a timeout (3h by default) for the job. | ||||
|   # So the job could be stopped by the Gitea instance if it's timeout is shorter than this. | ||||
|   timeout: 3h | ||||
|   # Whether skip verifying the TLS certificate of the Gitea instance. | ||||
|   insecure: false | ||||
|   # The timeout for fetching the job from the Gitea instance. | ||||
|   fetch_timeout: 5s | ||||
|   # The interval for fetching the job from the Gitea instance. | ||||
|   fetch_interval: 2s | ||||
|   # The labels of a runner are used to determine which jobs the runner can run, and how to run them. | ||||
|   # Like: "macos-arm64:host" or "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest" | ||||
|   # Find more images provided by Gitea at https://gitea.com/gitea/runner-images . | ||||
|   # If it's empty when registering, it will ask for inputting labels. | ||||
|   # If it's empty when execute `daemon`, will use labels in `.runner` file. | ||||
|   labels: | ||||
|     - "ubuntu-latest:docker://gitea/runner-images:ubuntu-latest" | ||||
|     - "ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04" | ||||
|     - "ubuntu-20.04:docker://gitea/runner-images:ubuntu-20.04" | ||||
|  | ||||
| cache: | ||||
|   # Enable cache server to use actions/cache. | ||||
|   enabled: true | ||||
|   # The directory to store the cache data. | ||||
|   # If it's empty, the cache data will be stored in $HOME/.cache/actcache. | ||||
|   dir: "" | ||||
|   # The host of the cache server. | ||||
|   # It's not for the address to listen, but the address to connect from job containers. | ||||
|   # So 0.0.0.0 is a bad choice, leave it empty to detect automatically. | ||||
|   host: "" | ||||
|   # The port of the cache server. | ||||
|   # 0 means to use a random available port. | ||||
|   port: 0 | ||||
|   # The external cache server URL. Valid only when enable is true. | ||||
|   # If it's specified, act_runner will use this URL as the ACTIONS_CACHE_URL rather than start a server by itself. | ||||
|   # The URL should generally end with "/". | ||||
|   external_server: "" | ||||
|  | ||||
| container: | ||||
|   # Specifies the network to which the container will connect. | ||||
|   # Could be host, bridge or the name of a custom network. | ||||
|   # If it's empty, act_runner will create a network automatically. | ||||
|   network: "" | ||||
|   # Whether to use privileged mode or not when launching task containers (privileged mode is required for Docker-in-Docker). | ||||
|   privileged: false | ||||
|   # And other options to be used when the container is started (eg, --add-host=my.gitea.url:host-gateway). | ||||
|   options: | ||||
|   # The parent directory of a job's working directory. | ||||
|   # NOTE: There is no need to add the first '/' of the path as act_runner will add it automatically.  | ||||
|   # If the path starts with '/', the '/' will be trimmed. | ||||
|   # For example, if the parent directory is /path/to/my/dir, workdir_parent should be path/to/my/dir | ||||
|   # If it's empty, /workspace will be used. | ||||
|   workdir_parent: | ||||
|   # Volumes (including bind mounts) can be mounted to containers. Glob syntax is supported, see https://github.com/gobwas/glob | ||||
|   # You can specify multiple volumes. If the sequence is empty, no volumes can be mounted. | ||||
|   # For example, if you only allow containers to mount the `data` volume and all the json files in `/src`, you should change the config to: | ||||
|   # valid_volumes: | ||||
|   #   - data | ||||
|   #   - /src/*.json | ||||
|   # If you want to allow any volume, please use the following configuration: | ||||
|   # valid_volumes: | ||||
|   #   - '**' | ||||
|   valid_volumes: [] | ||||
|   # overrides the docker client host with the specified one. | ||||
|   # If it's empty, act_runner will find an available docker host automatically. | ||||
|   # If it's "-", act_runner will find an available docker host automatically, but the docker host won't be mounted to the job containers and service containers. | ||||
|   # If it's not empty or "-", the specified docker host will be used. An error will be returned if it doesn't work. | ||||
|   docker_host: "" | ||||
|   # Pull docker image(s) even if already present | ||||
|   force_pull: true | ||||
|   # Rebuild docker image(s) even if already present | ||||
|   force_rebuild: false | ||||
|  | ||||
| host: | ||||
|   # The parent directory of a job's working directory. | ||||
|   # If it's empty, $HOME/.cache/act/ will be used. | ||||
|   workdir_parent: | ||||
| @@ -1,5 +0,0 @@ | ||||
| GITEA_INSTANCE_URL=https://git.bensuperpc.org | ||||
| GITEA_RUNNER_REGISTRATION_TOKEN=TBGzS0m823Xk732zRqjrbcSWFTEPajj5V5OFzXWP | ||||
| GITEA_RUNNER_NAME=runner-1 | ||||
| #GITEA_RUNNER_LABELS= | ||||
| CONFIG_FILE=/config.yaml | ||||
							
								
								
									
										15
									
								
								infrastructure/services/gitea/env/gitea.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								infrastructure/services/gitea/env/gitea.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,15 +0,0 @@ | ||||
| USER_UID=1000 | ||||
| USER_GID=1000 | ||||
| GITEA__database__DB_TYPE=mysql | ||||
| GITEA__database__HOST=database_gitea:3306 | ||||
| GITEA__database__NAME=gitea | ||||
| GITEA__database__USER=bensuperpc | ||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c | ||||
| #GITEA__security__INTERNAL_TOKEN= | ||||
| GITEA__server__DOMAIN=git.bensuperpc.org | ||||
| GITEA__server__SSH_DOMAIN=git.bensuperpc.org | ||||
| GITEA__server__HTTP_PORT=3000 | ||||
| GITEA__server__SSH_LISTEN_PORT=5555 | ||||
| GITEA__server__SSH_PORT=5555 | ||||
| GITEA__server__ROOT_URL=https://git.bensuperpc.org | ||||
| @@ -1,4 +0,0 @@ | ||||
| MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||
| MARIADB_USER=bensuperpc | ||||
| MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||
| MARIADB_DATABASE=gitea | ||||
| @@ -1,51 +0,0 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/configs/bookmarks | ||||
|  | ||||
| - Developer: | ||||
|     - Github: | ||||
|         - abbr: GH | ||||
|           href: https://github.com/bensuperpc | ||||
|           description: github.com | ||||
|  | ||||
| - Social: | ||||
|     - Reddit: | ||||
|         - abbr: RE | ||||
|           href: https://reddit.com/u/bensuperpc | ||||
|           description: reddit.com | ||||
|     - Twitter: | ||||
|         - abbr: TW | ||||
|           href: https://twitter.com/bensuperpc | ||||
|           description: twitter.com | ||||
|     - Bluesky: | ||||
|         - abbr: BS | ||||
|           href: https://bsky.app/profile/bensuperpc.bsky.social | ||||
|           description: bsky.app | ||||
|     - Mastodon: | ||||
|         - abbr: MA | ||||
|           href: https://mastodon.social/@bensuperpc | ||||
|           description: mastodon.social | ||||
|  | ||||
| - Entertainment: | ||||
|     - YouTube: | ||||
|         - abbr: YT | ||||
|           href: https://youtube.com/c/bensuperpc | ||||
|           description: youtube.com | ||||
|     - Twitch: | ||||
|         - abbr: TW | ||||
|           href: https://twitch.tv/bensuperpc | ||||
|           description: twitch.tv | ||||
|  | ||||
| - Friends: | ||||
|     - Gnous: | ||||
|         - abbr: Gn | ||||
|           href: https://gnous.eu/ | ||||
|           description: gnous.eu | ||||
|     - Imagisphe: | ||||
|         - abbr: IM | ||||
|           href: https://imagisphe.re/ | ||||
|           description: imagisphe.re | ||||
|     - Greep: | ||||
|         - abbr: GP | ||||
|           href: https://greep.fr/#/ | ||||
|           description: greep.fr | ||||
| @@ -1,10 +0,0 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/configs/docker | ||||
|  | ||||
| #jellyfin: | ||||
| #  host: jellyfin | ||||
| #  port: 8096 | ||||
|  | ||||
| #my-docker: | ||||
| #   socket: /var/run/docker.sock | ||||
| @@ -1,2 +0,0 @@ | ||||
| --- | ||||
| # sample kubernetes config | ||||
| @@ -1,4 +0,0 @@ | ||||
| --- | ||||
| # url: https://proxmox.host.or.ip:8006 | ||||
| # token: username@pam!Token ID | ||||
| # secret: secret | ||||
| @@ -1,145 +0,0 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/configs/services/ | ||||
|  | ||||
| - Personal: | ||||
|     - wordpress: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/wordpress.png | ||||
|         href: https://wordpress.bensuperpc.org/ | ||||
|         description: Wordpress | ||||
|         ping: wordpress.bensuperpc.org | ||||
|         container: wordpress | ||||
|     - jellyfin: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/jellyfin.png | ||||
|         href: https://jellyfin.bensuperpc.org/ | ||||
|         description: Jellyfin | ||||
|         ping: jellyfin.bensuperpc.org | ||||
|         container: jellyfin | ||||
|     - projectsend: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/projectsend.png | ||||
|         href: https://projectsend.bensuperpc.org/ | ||||
|         description: ProjectSend | ||||
|         ping: projectsend.bensuperpc.org | ||||
|         container: projectsend | ||||
| - Sharing: | ||||
|     - psitransfer: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/psitransfer.png | ||||
|         href: https://psitransfer.bensuperpc.org/ | ||||
|         description: PsiTransfer | ||||
|         ping: psitransfer.bensuperpc.org | ||||
|         container: psitransfer | ||||
|     - picoshare: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/picoshare.png | ||||
|         href: https://picoshare.bensuperpc.org/ | ||||
|         description: PicoShare | ||||
|         ping: picoshare.bensuperpc.org | ||||
|         container: picoshare | ||||
|     - privatebin: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/privatebin.png | ||||
|         href: https://privatebin.bensuperpc.org/ | ||||
|         description: PrivateBin | ||||
|         ping: privatebin.bensuperpc.org | ||||
|         container: privatebin | ||||
|     - qbittorrent: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/qbittorrent.png | ||||
|         href: https://qbittorrent.bensuperpc.org/ | ||||
|         description: qBittorrent | ||||
|         ping: qbittorrent.bensuperpc.org | ||||
|         container: qbittorrent | ||||
|     - syncthing: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/syncthing.png | ||||
|         href: https://syncthing.bensuperpc.org/ | ||||
|         description: Syncthing | ||||
|         ping: syncthing.bensuperpc.org | ||||
|         container: syncthing | ||||
|     - transmission: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/transmission.png | ||||
|         href: https://transmission.bensuperpc.org/ | ||||
|         description: Transmission | ||||
|         ping: transmission.bensuperpc.org | ||||
|         container: transmission | ||||
|     - dufs: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/dufs.png | ||||
|         href: https://dufs.bensuperpc.org/ | ||||
|         description: Dufs | ||||
|         ping: dufs.bensuperpc.org | ||||
|         container: dufs | ||||
| #    - caddy: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/caddy.png | ||||
| #        href: https://public.bensuperpc.org/ | ||||
| #        description: File browser | ||||
| #        ping: public.bensuperpc.org | ||||
| #        container: caddy | ||||
|  | ||||
| - Utils: | ||||
|     - it-tools: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/it-tools.png | ||||
|         href: https://it-tools.bensuperpc.org/ | ||||
|         description: IT Tools | ||||
|         ping: it-tools.bensuperpc.org | ||||
|         container: it-tools0 | ||||
|     - omni-tools: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/it-tools.png | ||||
|         href: https://omni-tools.bensuperpc.org/ | ||||
|         description: Omni Tools | ||||
|         ping: omni-tools.bensuperpc.org | ||||
|         container: omni-tools0 | ||||
|     - cyberchef: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/cyberchef.png | ||||
|         href: https://cyberchef.bensuperpc.org/ | ||||
|         description: CyberChef | ||||
|         ping: cyberchef.bensuperpc.org | ||||
|         container: cyberchef0 | ||||
|     - stirlingpdf: | ||||
|         #icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/stirlingpdf.png | ||||
|         href: https://stirlingpdf.bensuperpc.org/ | ||||
|         description: StirlingPDF | ||||
|         ping: stirlingpdf.bensuperpc.org | ||||
|         container: stirlingpdf | ||||
|     - gitea: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/gitea.png | ||||
|         href: https://gitea.bensuperpc.org/ | ||||
|         description: Gitea | ||||
|         ping: gitea.bensuperpc.org | ||||
|         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: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/open-webui.png | ||||
|         href: https://open-webui.bensuperpc.org/ | ||||
|         description: ChatGPT local | ||||
|         ping: open-webui.bensuperpc.org | ||||
|         container: open-webui | ||||
|  | ||||
| - Games: | ||||
|     - minecraft: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/minecraft.png | ||||
| #        href: https://minecraft.bensuperpc.org/ | ||||
|         description: Minecraft server | ||||
| #        ping: minecraft.bensuperpc.org | ||||
|         container: minecraft-server | ||||
|     - 7dtd: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/7dtd.png | ||||
| #        href: https://7dtd.bensuperpc.org/ | ||||
|         description: 7 Days to Die server | ||||
| #        ping: 7dtd.bensuperpc.org | ||||
|         container: 7daystodie_server | ||||
|     - satisfactory: | ||||
| #        icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/7dtd.png | ||||
| #        href: https://7dtd.bensuperpc.org/ | ||||
|         description: Satisfactory server | ||||
| #        ping: 7dtd.bensuperpc.org | ||||
|         container: satisfactory_server | ||||
|  | ||||
| - Admin: | ||||
|     - uptime-kuma: | ||||
|         icon: https://cdn.jsdelivr.net/gh/walkxcode/dashboard-icons@master/png/uptime-kuma.png | ||||
|         href: https://uptimekuma.bensuperpc.org/ | ||||
|         description: Uptime Kuma | ||||
|         ping: uptimekuma.bensuperpc.org | ||||
|         container: uptime-kuma | ||||
|  | ||||
| @@ -1,58 +0,0 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/configs/settings/ | ||||
|  | ||||
| title: Bensuperpc | ||||
|  | ||||
| description: Bensuperpc's homepage | ||||
|  | ||||
| base: https://www.bensuperpc.org | ||||
|  | ||||
| favicon: /image/favicon.ico | ||||
|  | ||||
| logpath: /app/logs | ||||
|  | ||||
| background:  | ||||
|   image: /image/background.jpg | ||||
|   blur: md | ||||
|   opacity: 50 | ||||
|   brightness: 50 | ||||
|  | ||||
| theme: dark | ||||
| color: slate | ||||
|  | ||||
| language: en | ||||
|  | ||||
| layout: | ||||
|   Personal: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Sharing: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Admin: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|   Utils: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|     initiallyCollapsed: false | ||||
|   Games: | ||||
|     style: row | ||||
|     columns: 6 | ||||
|     initiallyCollapsed: false | ||||
|  | ||||
| quicklaunch: | ||||
|   searchDescriptions: true | ||||
|   hideInternetSearch: false | ||||
|   hideVisitURL: false | ||||
|  | ||||
| hideVersion: true | ||||
|  | ||||
| headerStyle: boxed | ||||
|  | ||||
| useEqualHeights: true | ||||
|  | ||||
| #providers: | ||||
| #  openweathermap: openweathermapapikey | ||||
| #  weatherapi: weatherapiapikey | ||||
| @@ -1,37 +0,0 @@ | ||||
| --- | ||||
| # For configuration options and examples, please see: | ||||
| # https://gethomepage.dev/widgets/services/ | ||||
| # https://gethomepage.dev/widgets/services/qbittorrent/ | ||||
|  | ||||
| #- logo: | ||||
| #    icon: /image/daisy.jpg | ||||
|  | ||||
| - resources: | ||||
|     cpu: true | ||||
|     cputemp: true | ||||
|     memory: true | ||||
|     disk: / | ||||
|     uptime: true | ||||
|     refresh: 3000 | ||||
|  | ||||
| #- search: | ||||
| #    provider: duckduckgo | ||||
| #    target: _blank | ||||
| #    showSearchSuggestions: true | ||||
|  | ||||
| - datetime: | ||||
|     text_size: xl | ||||
|     locale: fr | ||||
|     format: | ||||
|         timeStyle: short | ||||
|         dateStyle: short | ||||
|  | ||||
| - openmeteo: | ||||
|     label: Nantes # optional | ||||
|     latitude: 47.216671 | ||||
|     longitude: -1.55 | ||||
|     timezone: Europe/Paris # optional | ||||
|     units: metric # or imperial | ||||
|     cache: 5 # Time in minutes to cache API responses, to stay within limits | ||||
|     format: # optional, Intl.NumberFormat options | ||||
|       maximumFractionDigits: 1 | ||||
| @@ -1,33 +0,0 @@ | ||||
| services: | ||||
|   # homepage | ||||
|   homepage: | ||||
|     image: ghcr.io/gethomepage/homepage:latest | ||||
|     container_name: homepage | ||||
|     profiles: | ||||
|       - homepage | ||||
|     restart: on-failure:5 | ||||
| #    environment: | ||||
| #      - PUID=${PUID:-1000} | ||||
| #      - PGID=${PGID:-1000} | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./env/homepage.env | ||||
|     volumes: | ||||
|       - homepage_log:/app/logs | ||||
|       - ./config:/app/config | ||||
|       - ./image:/app/public/image:ro | ||||
|       - /var/run/docker.sock:/var/run/docker.sock:ro | ||||
| #    develop: | ||||
| #      watch: | ||||
| #        - action: sync+restart | ||||
| #          path: ./homepage/image | ||||
| #          target: /app/public/image | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   homepage_log: | ||||
|     name: homepage_log | ||||
| @@ -1,3 +0,0 @@ | ||||
| PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||
| #PSITRANSFER_PORT=3000 | ||||
| HOMEPAGE_ALLOWED_HOSTS=www.bensuperpc.org | ||||
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 569 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 51 KiB | 
										
											Binary file not shown.
										
									
								
							| Before Width: | Height: | Size: 295 KiB | 
| @@ -1,51 +0,0 @@ | ||||
| services: | ||||
|   # it-tools | ||||
|   it-tools0: | ||||
|     image: ghcr.io/sharevb/it-tools:latest | ||||
|     container_name: it-tools0 | ||||
|     profiles: | ||||
|       - it-tools | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     read_only: false | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     cap_drop: | ||||
|       - SYS_ADMIN | ||||
|  | ||||
|     deploy: | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.5' | ||||
|           memory: 512M | ||||
|         reservations: | ||||
|           cpus: '0.001' | ||||
|           memory: 20M | ||||
|  | ||||
|   it-tools1: | ||||
|     image: ghcr.io/sharevb/it-tools:latest | ||||
|     container_name: it-tools1 | ||||
|     profiles: | ||||
|       - it-tools | ||||
|     restart: on-failure:5 | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     networks: | ||||
|       - infra-network | ||||
|     read_only: false | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|     cap_drop: | ||||
|       - SYS_ADMIN | ||||
|  | ||||
|     deploy: | ||||
|       resources: | ||||
|         limits: | ||||
|           cpus: '0.5' | ||||
|           memory: 512M | ||||
|         reservations: | ||||
|           cpus: '0.001' | ||||
|           memory: 20M | ||||
| @@ -1,37 +0,0 @@ | ||||
| services: | ||||
|   # Jellyfin | ||||
|   jellyfin: | ||||
|     image: lscr.io/linuxserver/jellyfin:latest | ||||
|     container_name: jellyfin | ||||
|     profiles: | ||||
|       - jellyfin | ||||
|     restart: on-failure:5 | ||||
|     environment: | ||||
|       - PUID=${PUID:-1000} | ||||
|       - PGID=${PGID:-1000} | ||||
|     depends_on: | ||||
|       - caddy | ||||
|     env_file: | ||||
|       - ./env/jellyfin.env | ||||
|     volumes: | ||||
|       - jellyfin_config:/config | ||||
|       - jellyfin_cache:/cache | ||||
|       - public_data:/public | ||||
|       - private_data:/private | ||||
|     # Hardware acceleration (For Intel and AMD GPUs) | ||||
|     devices: | ||||
|       - /dev/dri:/dev/dri | ||||
|     networks: | ||||
|       - infra-network | ||||
|     security_opt: | ||||
|       - no-new-privileges:true | ||||
|  | ||||
| volumes: | ||||
|   jellyfin_config: | ||||
|     name: jellyfin_config | ||||
|   jellyfin_cache: | ||||
|     name: jellyfin_cache | ||||
|   public_data: | ||||
|     name: public_data | ||||
|   private_data: | ||||
|     name: private_data | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user