mirror of
				https://github.com/bensuperpc/infrastructure.git
				synced 2025-10-25 07:16:21 +02:00 
			
		
		
		
	Compare commits
	
		
			144 Commits
		
	
	
		
			dns
			...
			897be921a6
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 897be921a6 | |||
| d8d00cbd24 | |||
| 6b39245125 | |||
| f48cbcc522 | |||
| 36e57c4a47 | |||
| 31596675b9 | |||
| 2b902e54be | |||
| fcd4dc85bc | |||
| 840c6fa5b5 | |||
| 628c6fe906 | |||
| 19a6c49949 | |||
| 045d142e27 | |||
| e5e13b11e8 | |||
| 736959c540 | |||
| e942d364fe | |||
| c7b7ce8585 | |||
| 2d268629b5 | |||
| ccc7f82f0a | |||
| 49af326783 | |||
| d6d8fedc11 | |||
| 22f4237b49 | |||
| 81c1188014 | |||
| ee2ed9273a | |||
| 14ca102a0f | |||
| 4fc62cb648 | |||
| e7e544e774 | |||
| e5472d4abb | |||
| f90b8301bd | |||
| 970aad479c | |||
| 81c81a5d83 | |||
| 7595072298 | |||
| ec5cb3c38c | |||
| 591eb61c40 | |||
| b486ac3d0d | |||
| d111652a1c | |||
| 18db276b49 | |||
| 4c910bdf2e | |||
| 2fbbba051f | |||
| 9a6ac97872 | |||
| 951d1130b0 | |||
| 3b4c3cb54c | |||
| 3bdcd4d459 | |||
| b8f69ed6e2 | |||
| 9700b8a379 | |||
| e0ce9cf191 | |||
| 9c9938bc55 | |||
| 33785901fc | |||
| ca1eaf9787 | |||
| f25a6fdb32 | |||
| fb8d683f9f | |||
| 8885463196 | |||
| 7d6d59a4ab | |||
| 68c23b1b0f | |||
| 6c9adab271 | |||
| 6c8f789e58 | |||
| b862f17417 | |||
| bc7167a1b7 | |||
| d53081cd35 | |||
| 5bada9c98b | |||
| ca42926acc | |||
| e5d8ced52d | |||
| b10dcf6603 | |||
| d6cfd4b229 | |||
| d1f13de09e | |||
| 4818e18842 | |||
| 811f6ac7bb | |||
| 540bf34947 | |||
| 6817b3deb0 | |||
| 860be99a4e | |||
| 1b9c6ad1ad | |||
| 35e54a598c | |||
| 018282f8bb | |||
| a265603ff6 | |||
| 6578de0ffa | |||
| 31220657c8 | |||
| 4676eb9cdc | |||
| 754c5ccb9c | |||
| 6ab1b3c486 | |||
| 4496211aa5 | |||
| e430fad46e | |||
| 55bf1ddf70 | |||
| b6d1b9f5a7 | |||
| 54e24022ce | |||
| a65975e840 | |||
| 62e7ec4650 | |||
| 41fe67ba58 | |||
| 0745869554 | |||
| 4dc0d9f56a | |||
| 96d4284d64 | |||
| 1b34b7f9f2 | |||
| b2a3b2623e | |||
| 162250b0d9 | |||
| b819c4398d | |||
| 5b48945835 | |||
| d7a36310ec | |||
| c0aa45026b | |||
| 71ab3026c6 | |||
| 2aaccc2458 | |||
| a15380b95c | |||
| 84986db7b1 | |||
| 3573286659 | |||
| 0c75405cec | |||
| b8259bf676 | |||
| fe327d654a | |||
| c33e11e455 | |||
| 1f96c00bfc | |||
| 247e344a52 | |||
| bd67d7d944 | |||
| 47ea7b6ea5 | |||
| 059289d7c3 | |||
| 5eef332e34 | |||
| 51a014e14c | |||
| edc107feaf | |||
| 68b917a720 | |||
| eab7e99486 | |||
| 3d88e6ca37 | |||
| 927522a5a8 | |||
| bcec823b46 | |||
| 572c9bc4bb | |||
| 7989688e8f | |||
| 4ba26dd3b7 | |||
| ec51802360 | |||
| 6a91e090df | |||
| 8ac352e542 | |||
|   | 6e57893aec | ||
| 2a997e0f4c | |||
| 8b479921c7 | |||
| f22ca7a7f0 | |||
| 0e523a9edc | |||
| ced832d359 | |||
| 0f7df1997f | |||
| a141daff08 | |||
| 29e3988bca | |||
| 72973384fb | |||
| 2da0baa838 | |||
| 0c27a361d3 | |||
| 6b5f489252 | |||
| 39ba3a47a2 | |||
| 112df38652 | |||
| b9296c280d | |||
| 2df1d52ffb | |||
| b101480a01 | |||
| f11ca40a94 | |||
| 340c1a1438 | 
							
								
								
									
										15
									
								
								.gitea/workflows/gitea-ci.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								.gitea/workflows/gitea-ci.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										22
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								.github/workflows/main.yml
									
									
									
									
										vendored
									
									
								
							| @@ -26,7 +26,23 @@ jobs: | |||||||
|         with: |         with: | ||||||
|           submodules: "recursive" |           submodules: "recursive" | ||||||
|           fetch-depth: 0 |           fetch-depth: 0 | ||||||
|       - name: "Update server" |       - name: "Check compose" | ||||||
|         run: make update |         run: make check | ||||||
|  |       - name: "Update server image" | ||||||
|  |         run: make image-update | ||||||
|       - name: "Build server" |       - name: "Build server" | ||||||
|         run: make build |         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 | ||||||
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @@ -1 +1,2 @@ | |||||||
|  |  | ||||||
|  | /*.tar.gz | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								.gitmodules
									
									
									
									
										vendored
									
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | [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 | ||||||
|   | |||||||
							
								
								
									
										96
									
								
								DockerCompose.mk
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								DockerCompose.mk
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  | #////////////////////////////////////////////////////////////// | ||||||
|  | #//                                                          // | ||||||
|  | #//  docker-multimedia, 2024                                 // | ||||||
|  | #//  Created: 30, May, 2021                                  // | ||||||
|  | #//  Modified: 14 November, 2024                             // | ||||||
|  | #//  file: -                                                 // | ||||||
|  | #//  -                                                       // | ||||||
|  | #//  Source:                                                 // | ||||||
|  | #//  OS: ALL                                                 // | ||||||
|  | #//  CPU: ALL                                                // | ||||||
|  | #//                                                          // | ||||||
|  | #////////////////////////////////////////////////////////////// | ||||||
|  |  | ||||||
|  | PROJECT_DIRECTORY ?= infrastructure | ||||||
|  |  | ||||||
|  | DOCKER_EXEC ?= docker | ||||||
|  |  | ||||||
|  | DOCKER_PROFILES ?= main_infrastructure | ||||||
|  |  | ||||||
|  | PROFILE_CMD ?= $(addprefix --profile ,$(DOCKER_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 | ||||||
|  |  | ||||||
|  | .PHONY: build | ||||||
|  | build: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) build | ||||||
|  |  | ||||||
|  | .PHONY: start | ||||||
|  | start: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) up -d | ||||||
|  |  | ||||||
|  | .PHONY: start-at | ||||||
|  | start-at: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) up | ||||||
|  |  | ||||||
|  | .PHONY: no-start | ||||||
|  | no-start: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) up --no-start | ||||||
|  |  | ||||||
|  | .PHONY: check | ||||||
|  | check: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) config | ||||||
|  |  | ||||||
|  | .PHONY: stop | ||||||
|  | stop: down | ||||||
|  |  | ||||||
|  | .PHONY: down | ||||||
|  | down: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) down | ||||||
|  |  | ||||||
|  | .PHONY: restart | ||||||
|  | restart: stop start | ||||||
|  |  | ||||||
|  | .PHONY: logs | ||||||
|  | logs: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) logs | ||||||
|  |  | ||||||
|  | .PHONY: state | ||||||
|  | state: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) ps | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) top | ||||||
|  |  | ||||||
|  | .PHONY: volumes | ||||||
|  | volumes: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) config --volumes | ||||||
|  |  | ||||||
|  | .PHONY: image-update | ||||||
|  | image-update: | ||||||
|  | 	$(DOCKER_COMPOSE_COMMAND) pull | ||||||
|  |  | ||||||
|  | .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 | ||||||
							
								
								
									
										85
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										85
									
								
								Makefile
									
									
									
									
									
								
							| @@ -1,8 +1,8 @@ | |||||||
| #////////////////////////////////////////////////////////////// | #////////////////////////////////////////////////////////////// | ||||||
| #//                                                          // | #//                                                          // | ||||||
| #//  Infrastructure, 2024                                    // | #//  Script, 2022                                            // | ||||||
| #//  Created: 14, April, 2022                                // | #//  Created: 14, April, 2022                                // | ||||||
| #//  Modified: 05, May, 2024                                 // | #//  Modified: 30, November, 2024                            // | ||||||
| #//  file: -                                                 // | #//  file: -                                                 // | ||||||
| #//  -                                                       // | #//  -                                                       // | ||||||
| #//  Source:                                                 // | #//  Source:                                                 // | ||||||
| @@ -11,64 +11,29 @@ | |||||||
| #//                                                          // | #//                                                          // | ||||||
| #////////////////////////////////////////////////////////////// | #////////////////////////////////////////////////////////////// | ||||||
|  |  | ||||||
| DOCKER := docker | ADMIN_SERVICES := openssh uptime-kuma | ||||||
|  | #BLOG_SERVICES := wordpress | ||||||
|  | #7DAYS_TO_DIE_SERVICES := 7daystodie_server 7daystodie_backup | ||||||
|  | #MINECRAFT_SERVICES := minecraft_server minecraft_backup | ||||||
|  | #SATISFACTORY_SERVICES := satisfactory_server satisfactory_backup | ||||||
|  | TEAM_FORTRESS_SERVICES := teamfortress2_server | ||||||
|  | # teamfortress2_backup | ||||||
|  | # gitea gitea-runner | ||||||
|  | #IA_SERVICES := open-webui | ||||||
|  | SHARING_SERVICES := privatebin | ||||||
|  | # jellyfin | ||||||
|  | # psitransfer picoshare projectsend dufs syncthing | ||||||
|  | TORRENTS_SERVICES := qbittorrent | ||||||
|  | # transmission | ||||||
|  | UTILS_SERVICES := it-tools omni-tools cyberchef | ||||||
|  | # stirlingpdf | ||||||
|  | MAIN_SERVICES := main_infrastructure caddy homepage | ||||||
|  |  | ||||||
| PROFILES := caddy wordpress adminer uptime-kuma qbittorrent gitea jellyfin watchtower backup syncthing openssh | PROJECT_DIRECTORY := infrastructure | ||||||
| PROFILE_CMD := $(addprefix --profile ,$(PROFILES)) |  | ||||||
|  |  | ||||||
| COMPOSE_FILES :=  $(shell find docker-compose*.yml | sed -e 's/^/--file /') | DOCKER_PROFILES := $(MAIN_SERVICES) $(ADMIN_SERVICES) $(BLOG_SERVICES) \ | ||||||
|  | 	$(7DAYS_TO_DIE_SERVICES) $(MINECRAFT_SERVICES) $(SATISFACTORY_SERVICES) \ | ||||||
|  | 	$(GIT_SERVICES) $(IA_SERVICES) $(SHARING_SERVICES) \ | ||||||
|  | 	$(TORRENTS_SERVICES) $(UTILS_SERVICES) | ||||||
|  |  | ||||||
| .PHONY: build all | include DockerCompose.mk | ||||||
| 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,28 +1,42 @@ | |||||||
| # Infrastructure | # Infrastructure | ||||||
|  |  | ||||||
| _My personal infrastructure for my servers and services._ | _Open source, decentralized and self-hosted infrastructure for many services._ | ||||||
|  |  | ||||||
| ## About | ## 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 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. | 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. | If you have any **questions** or **suggestions**, feel free to open an issue or a pull request. | ||||||
|  |  | ||||||
| ## Features | ## Features | ||||||
|  |  | ||||||
| - [x] caddy 2 reverse proxy | - [x] caddy 2 HTTP/S reverse proxy | ||||||
| - [x] Docker / docker-compose | - [x] Docker / docker-compose | ||||||
| - [x] Caddy |  | ||||||
| - [x] Wordpress (Via FASTCGI/caddy) | - [x] Wordpress (Via FASTCGI/caddy) | ||||||
| - [x] Adminer (MariaDB) |  | ||||||
| - [x] Jellyfin (Media server) | - [x] Jellyfin (Media server) | ||||||
| - [x] Gitea (Git server) | - [x] Gitea (Git server) | ||||||
|  | - [x] Forgejo (Git server, fork of Gitea) | ||||||
| - [x] Uptime Kuma (Monitoring) | - [x] Uptime Kuma (Monitoring) | ||||||
| - [x] Torrent server | - [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 | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Screenshots | ## Screenshots | ||||||
|  |  | ||||||
|  | The homepage is a dashboard with many widgets and services. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Installation and configuration | ## Installation and configuration | ||||||
|  |  | ||||||
| ### Requirements | ### Requirements | ||||||
| @@ -31,9 +45,26 @@ If you have any **questions** or **suggestions**, feel free to open an issue or | |||||||
| - [Docker Compose](https://docs.docker.com/compose/install/) | - [Docker Compose](https://docs.docker.com/compose/install/) | ||||||
| - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | - [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) | ||||||
| - [Web domain](https://www.ovh.com/world/domains/) (I use OVH) | - [Web domain](https://www.ovh.com/world/domains/) (I use OVH) | ||||||
| - [Open port 80 and 443 on your router](http://192.168.0.1/) (I use a SFR box with default IP) | - [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) | ||||||
|  |  | ||||||
| ***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...*** | 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...** | ||||||
|  |  | ||||||
| ### Clone | ### Clone | ||||||
|  |  | ||||||
| @@ -49,6 +80,8 @@ Go to the folder | |||||||
| cd infrastructure | 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 | ### 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... | For all **bensuperpc.org**, you need to replace it with your domain, example: **mydomain.com**, so the same for **bensuperpc.com** ect... | ||||||
| @@ -57,25 +90,34 @@ 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' | 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/wordpress/Caddyfile) | Check if all bensuperpc.* are replaced by your domain in [Caddyfile](caddy/services/wordpress/Caddyfile) | ||||||
|  |  | ||||||
| And then, caddy will generate the certificate for you and renew it automatically :D | And then, caddy will generate the certificate for you and renew it automatically :D | ||||||
|  |  | ||||||
| | Domain name | Type | Description | | | Domain name                                                        | Type | Description                                                  | | ||||||
| | --- | --- | --- | | | ------------------------------------------------------------------ | ---- | ------------------------------------------------------------ | | ||||||
| | [bensuperpc.org](https://bensuperpc.org) | Main | Main domain | | | [bensuperpc.org](https://bensuperpc.org)                           | Main | Redirect to [www.bensuperpc.org](https://www.bensuperpc.org) | | ||||||
| | [adminer.bensuperpc.org](https://adminer.bensuperpc.org) | Sub | Adminer for MariaDB for wordpress only | | | [www.bensuperpc.org](https://www.bensuperpc.org)                   | Main | Homepage                                                     | | ||||||
| | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org) | Sub | Uptime Kuma for monitoring | | | [open-webui.bensuperpc.org](https://open-webui.bensuperpc.org)     | Sub  | For local chatGPT                                            | | ||||||
| | [torrent.bensuperpc.org](https://torrent.bensuperpc.org) | Sub | Torrent server | | | [wordpress.bensuperpc.org](https://wordpress.bensuperpc.org)       | Sub  | Wordpress website                                            | | ||||||
| | [git.bensuperpc.org](https://git.bensuperpc.org) | Sub | Gitea for git | | | [uptimekuma.bensuperpc.org](https://uptimekuma.bensuperpc.org)     | Sub  | Uptime Kuma for monitoring                                   | | ||||||
| | [link.bensuperpc.org](https://link.bensuperpc.org) | Sub | For link shortener | | | [qbittorrent.bensuperpc.org](https://qbittorrent.bensuperpc.org)   | Sub  | Torrent client/server                                        | | ||||||
| | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org) | Sub | Jellyfin for media server | | | [transmission.bensuperpc.org](https://transmission.bensuperpc.org) | Sub  | Torrent client/server                                        | | ||||||
| | [syncthing.bensuperpc.org](https://syncthing.bensuperpc.org) | Sub | SyncThing for file synchronization | | | [gitea.bensuperpc.org](https://gitea.bensuperpc.org)               | Sub  | Gitea for git                                                | | ||||||
| | [ssh.bensuperpc.org](https://ssh.bensuperpc.org) | Sub | Openssh for ssh | | | [forgejo.bensuperpc.org](https://forgejo.bensuperpc.org/)          | Sub  | Fork of Gitea for git                                        | | ||||||
| | bensuperpc.com | Main | Redirect to bensuperpc.org | | | [git.bensuperpc.org](https://git.bensuperpc.org)                   | Sub  | Fork of Gitea for git                                        | | ||||||
| | bensuperpc.fr | Main | Redirect to bensuperpc.org | | | [link.bensuperpc.org](https://link.bensuperpc.org)                 | Sub  | For link shortener                                           | | ||||||
| | bensuperpc.net | Main | Redirect to bensuperpc.org | | | [jellyfin.bensuperpc.org](https://jellyfin.bensuperpc.org)         | Sub  | Jellyfin for media server                                    | | ||||||
| | bensuperpc.ovh | Main | Redirect to bensuperpc.org | | | [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                                           | | ||||||
|  |  | ||||||
| ### Configure the infrastructure | ### Configure the infrastructure | ||||||
|  |  | ||||||
| @@ -87,50 +129,127 @@ You can generate a password with 32 characters: | |||||||
| openssl rand -base64 32 | openssl rand -base64 32 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For the [wordpress.env](env/wordpress.env) file, you need to change the password and user for the database. | 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. | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| WORDPRESS_DB_USER=bensuperpc | WORDPRESS_DB_USER=bensuperpc | ||||||
| WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | WORDPRESS_DB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
| WORDPRESS_DB_NAME=wordpress |  | ||||||
| WORDPRESS_DB_HOST=wordpress_db:3306 |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [wordpress_db.env](env/wordpress_db.env) file, you need to change the password(s) and user for the database. | For [wordpress_db.env](infrastructure/services/wordpress/env/wordpress_db.env) file, you need to change the password(s) and user for the database. | ||||||
|      |  | ||||||
| ```sh | ```sh | ||||||
| MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | MARIADB_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||||
| MARIADB_USER=bensuperpc | MARIADB_USER=bensuperpc | ||||||
| MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | MARIADB_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw | ||||||
| MARIADB_DATABASE=wordpress |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [adminer.env](env/adminer.env) file, you need to change the password(s) and user for the database. | For [wordpress_backup.env](infrastructure/services/wordpress/env/wordpress_backup.env) file, you need to change the password(s) for the restic backup. | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | RESTIC_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| ADMINER_DEFAULT_SERVER=wordpress_db |  | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [gitea.env](env/gitea.env) file, you need to change the password(s) and user for the database. | #### Gitea | ||||||
|  |  | ||||||
|  | For [gitea.env](infrastructure/services/gitea/env/gitea.env) file, you need to change the password(s) and user for the database. | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| GITEA__database__DB_TYPE=mysql |  | ||||||
| GITEA__database__HOST=database_gitea:3306 |  | ||||||
| GITEA__database__NAME=gitea |  | ||||||
| GITEA__database__USER=bensuperpc | GITEA__database__USER=bensuperpc | ||||||
| GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | GITEA__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
|  | GITEA__security__SECRET_KEY=ykcZt23an1E4lFHWvrCKdAyt16WAiK9c | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| For [gitea_db.env](env/gitea_db.env) file, you need to change the password(s) and user for the database. | For [gitea_db.env](infrastructure/services/gitea/env/gitea_db.env) file, you need to change the password(s) and user for the database. | ||||||
|  |  | ||||||
| ```sh | ```sh | ||||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||||
| MYSQL_USER=bensuperpc | MARIADB_USER=bensuperpc | ||||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
| MYSQL_DATABASE=gitea | ``` | ||||||
|  |  | ||||||
|  | #### 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 | ||||||
| ``` | ``` | ||||||
|  |  | ||||||
| ### Start the infrastructure | ### Start the infrastructure | ||||||
| @@ -153,24 +272,87 @@ Remove countainers with: | |||||||
| make down | 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. | You can disable some services by removing the service name in PROFILES variable in the [Makefile](Makefile) file. | ||||||
|  |  | ||||||
| ## Build with | 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 | ||||||
|  |  | ||||||
| - [Wordpress](https://wordpress.org/) | - [Wordpress](https://wordpress.org/) | ||||||
| - [Gnu Make](https://www.gnu.org/software/make/) | - [Gnu Make](https://www.gnu.org/software/make/) | ||||||
| @@ -181,8 +363,31 @@ You can disable some services by removing the service name in PROFILES variable | |||||||
| - [Docker Hub](https://hub.docker.com/) | - [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) | - [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) | - [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/) | - [Letsencrypt](https://letsencrypt.org/) | ||||||
| - [Caddy](https://caddyserver.com/) | - [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 | ## License | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,15 +0,0 @@ | |||||||
| { |  | ||||||
| 	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 |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.com {   |  | ||||||
|   	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.com {   |  | ||||||
|   	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.fr { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.fr { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.net { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.net { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,97 +0,0 @@ | |||||||
| 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} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
|  |  | ||||||
| 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 |  | ||||||
| } |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| bensuperpc.ovh { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
|  |  | ||||||
| www.bensuperpc.ovh { |  | ||||||
| 	redir https://www.bensuperpc.org{uri} permanent |  | ||||||
| } |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| 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 |  | ||||||
| @@ -1,35 +0,0 @@ | |||||||
| 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 |  | ||||||
| @@ -1,46 +0,0 @@ | |||||||
| 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 |  | ||||||
| @@ -1,28 +0,0 @@ | |||||||
| 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 |  | ||||||
| @@ -1,6 +0,0 @@ | |||||||
| version: '3.9' |  | ||||||
|  |  | ||||||
| networks: |  | ||||||
|   infra-network: |  | ||||||
|     driver: bridge |  | ||||||
|     name: infra-network |  | ||||||
| @@ -1,25 +0,0 @@ | |||||||
| 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,5 +0,0 @@ | |||||||
| version: '3.9' |  | ||||||
|  |  | ||||||
| volumes: |  | ||||||
|   uptimekuma_data: |  | ||||||
|     name: uptimekuma_data |  | ||||||
| @@ -1,16 +0,0 @@ | |||||||
| 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 |  | ||||||
							
								
								
									
										4
									
								
								env/adminer.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/adminer.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MYSQL_ROOT_PASSWORD=7L1Ncbquax0B2TCOmrjaQl9n5mnY88bQ |  | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=lEOEf8cndnDjp84O4Uv5D9zJLJDFatLw |  | ||||||
| ADMINER_DEFAULT_SERVER=wordpress_db |  | ||||||
							
								
								
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/backup.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| 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
									
									
								
							
							
						
						
									
										7
									
								
								env/gitea.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,7 +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 |  | ||||||
							
								
								
									
										4
									
								
								env/gitea_db.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								env/gitea_db.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,4 +0,0 @@ | |||||||
| MYSQL_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X |  | ||||||
| MYSQL_USER=bensuperpc |  | ||||||
| MYSQL_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j |  | ||||||
| MYSQL_DATABASE=gitea |  | ||||||
							
								
								
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								env/openssh.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,11 +0,0 @@ | |||||||
| 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= |  | ||||||
							
								
								
									
										2
									
								
								env/syncthing.env
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								env/syncthing.env
									
									
									
									
										vendored
									
									
								
							| @@ -1,2 +0,0 @@ | |||||||
| PUID=1000 |  | ||||||
| PGID=1000 |  | ||||||
							
								
								
									
										53
									
								
								infrastructure/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								infrastructure/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,53 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										1
									
								
								infrastructure/services/7daystodie-server
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								infrastructure/services/7daystodie-server
									
									
									
									
									
										Submodule
									
								
							 Submodule infrastructure/services/7daystodie-server added at 9e81da5eea
									
								
							
							
								
								
									
										15
									
								
								infrastructure/services/caddy/config/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								infrastructure/services/caddy/config/Caddyfile
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | { | ||||||
|  | 	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/* | ||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | 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 | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								infrastructure/services/caddy/config/website/dufs.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/services/caddy/config/website/dufs.caddy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | dufs.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy dufs:5000 | ||||||
|  | } | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | git.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy forgejo:3000 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | forgejo.{$MAIN_DOMAIN} { | ||||||
|  | 	redir https://git.{$MAIN_DOMAIN}{uri} permanent | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								infrastructure/services/caddy/config/website/gitea.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/services/caddy/config/website/gitea.caddy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | gitea.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy gitea:3000 | ||||||
|  | } | ||||||
							
								
								
									
										14
									
								
								infrastructure/services/caddy/config/website/header.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								infrastructure/services/caddy/config/website/header.caddy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | (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 | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | homepage.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy homepage:3000 | ||||||
|  | } | ||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | 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 | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | jellyfin.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy jellyfin:8096 | ||||||
|  | } | ||||||
							
								
								
									
										27
									
								
								infrastructure/services/caddy/config/website/main.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								infrastructure/services/caddy/config/website/main.caddy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | 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 | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										3
									
								
								infrastructure/services/caddy/config/website/memos.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/services/caddy/config/website/memos.caddy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | memos.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy memos:5230 | ||||||
|  | } | ||||||
| @@ -0,0 +1,9 @@ | |||||||
|  | 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 | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | open-webui.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy open-webui:8080 | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | picoshare.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy picoshare:4001 | ||||||
|  | } | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | privatebin.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy privatebin:8080 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | pastebin.{$MAIN_DOMAIN} { | ||||||
|  | 	redir https://privatebin.{$MAIN_DOMAIN} permanent | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | projectsend.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy projectsend:80 | ||||||
|  | } | ||||||
| @@ -0,0 +1,7 @@ | |||||||
|  | transfer.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy psitransfer:3000 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | psitransfer.{$MAIN_DOMAIN} { | ||||||
|  | 	redir https://transfer.{$MAIN_DOMAIN}{uri} permanent | ||||||
|  | } | ||||||
| @@ -0,0 +1,11 @@ | |||||||
|  | torrent.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy qbittorrent:8080 | ||||||
|  | 	header { | ||||||
|  | 		Cache-Control "no-store" | ||||||
|  | 		import header_common | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | qbittorrent.{$MAIN_DOMAIN} { | ||||||
|  | 	redir https://torrent.{$MAIN_DOMAIN} permanent | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | stirlingpdf.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy stirlingpdf:8080 | ||||||
|  | } | ||||||
| @@ -0,0 +1,5 @@ | |||||||
|  | syncthing.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy syncthing:8384 { | ||||||
|  | 		header_up Host {upstream_hostport} | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | transmission.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy transmission:9091 | ||||||
|  | } | ||||||
| @@ -0,0 +1,3 @@ | |||||||
|  | uptimekuma.{$MAIN_DOMAIN} { | ||||||
|  | 	reverse_proxy uptime-kuma:3001 | ||||||
|  | } | ||||||
							
								
								
									
										34
									
								
								infrastructure/services/caddy/config/website/wordpress.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								infrastructure/services/caddy/config/website/wordpress.caddy
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | 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=()" | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										65
									
								
								infrastructure/services/caddy/docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								infrastructure/services/caddy/docker-compose.caddy.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,65 @@ | |||||||
|  | services: | ||||||
|  |   # Caddy | ||||||
|  |   caddy: | ||||||
|  |     image: caddy: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
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/services/caddy/env/caddy.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | MAIN_DOMAIN=bensuperpc.org | ||||||
|  | MAIL_DOMAIN=bensuperpc@gmail.com | ||||||
							
								
								
									
										14
									
								
								infrastructure/services/caddy/env/caddy_backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								infrastructure/services/caddy/env/caddy_backup.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | #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= | ||||||
| @@ -0,0 +1,51 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										25
									
								
								infrastructure/services/dufs/docker-compose.dufs.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								infrastructure/services/dufs/docker-compose.dufs.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | 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
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								infrastructure/services/dufs/env/dufs.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | |||||||
|  | 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" | ||||||
							
								
								
									
										96
									
								
								infrastructure/services/forgejo/docker-compose.forgejo.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								infrastructure/services/forgejo/docker-compose.forgejo.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,96 @@ | |||||||
|  | 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
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								infrastructure/services/forgejo/env/forgejo.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,25 @@ | |||||||
|  | USER_UID=1000 | ||||||
|  | USER_GID=1000 | ||||||
|  | FORGEJO__database__DB_TYPE=mysql | ||||||
|  | FORGEJO__database__HOST=database_forgejo:3306 | ||||||
|  | FORGEJO__database__NAME=forgejo | ||||||
|  | FORGEJO__database__USER=bensuperpc | ||||||
|  | FORGEJO__database__PASSWD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
|  | FORGEJO__APP_NAME=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 | ||||||
							
								
								
									
										4
									
								
								infrastructure/services/forgejo/env/forgejo_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/services/forgejo/env/forgejo_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||||
|  | MARIADB_USER=bensuperpc | ||||||
|  | MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
|  | MARIADB_DATABASE=forgejo | ||||||
							
								
								
									
										3
									
								
								infrastructure/services/forgejo/env/forgejo_runner.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/services/forgejo/env/forgejo_runner.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | DOCKER_HOST=tcp://docker:2376 | ||||||
|  | DOCKER_CERT_PATH=/certs/client | ||||||
|  | DOCKER_TLS_VERIFY=1 | ||||||
| @@ -0,0 +1,98 @@ | |||||||
|  | # 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 +1,3 @@ | |||||||
| version: '3.9' |  | ||||||
| 
 |  | ||||||
| services: | services: | ||||||
|   # Gitea |   # Gitea | ||||||
|   gitea: |   gitea: | ||||||
| @@ -7,16 +5,19 @@ services: | |||||||
|     container_name: gitea |     container_name: gitea | ||||||
|     profiles: |     profiles: | ||||||
|       - gitea |       - gitea | ||||||
|     restart: on-failure |     restart: on-failure:5 | ||||||
|     depends_on: |     depends_on: | ||||||
|  |       - database_gitea | ||||||
|       - caddy |       - caddy | ||||||
|  |     ports: | ||||||
|  |       - "5555:5555" | ||||||
|     env_file: |     env_file: | ||||||
|       - env/gitea.env |       - ./env/gitea.env | ||||||
|     volumes: |     volumes: | ||||||
|       - gitea_data:/var/lib/gitea |       - gitea_data:/var/lib/gitea | ||||||
|       - gitea_config:/etc/gitea |       - gitea_config:/etc/gitea | ||||||
| #      - /etc/timezone:/etc/timezone:ro |       - /etc/timezone:/etc/timezone:ro | ||||||
| #      - /etc/localtime:/etc/localtime:ro |       - /etc/localtime:/etc/localtime:ro | ||||||
|     networks: |     networks: | ||||||
|       - infra-network |       - infra-network | ||||||
|     security_opt: |     security_opt: | ||||||
| @@ -27,21 +28,40 @@ services: | |||||||
|     image: mariadb:latest |     image: mariadb:latest | ||||||
|     container_name: database_gitea |     container_name: database_gitea | ||||||
|     profiles: |     profiles: | ||||||
|       - database |  | ||||||
|       - gitea |       - gitea | ||||||
|     depends_on: |     depends_on: | ||||||
|       - gitea |       - caddy | ||||||
|     restart: on-failure |     restart: on-failure:5 | ||||||
|     volumes: |     volumes: | ||||||
|       - gitea_db:/var/lib/mysql:rw |       - gitea_db:/var/lib/mysql:rw | ||||||
|     env_file: |     env_file: | ||||||
|       - env/gitea_db.env |       - ./env/gitea_db.env | ||||||
|     command: '--default-authentication-plugin=mysql_native_password' |     command: '--default-authentication-plugin=mysql_native_password' | ||||||
|     networks: |     networks: | ||||||
|       - infra-network |       - infra-network | ||||||
|     security_opt: |     security_opt: | ||||||
|       - no-new-privileges:true |       - 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: | volumes: | ||||||
|   gitea_data: |   gitea_data: | ||||||
|     name: gitea_data |     name: gitea_data | ||||||
| @@ -49,3 +69,5 @@ volumes: | |||||||
|     name: gitea_config |     name: gitea_config | ||||||
|   gitea_db: |   gitea_db: | ||||||
|     name: gitea_db |     name: gitea_db | ||||||
|  |   gitea_runner: | ||||||
|  |     name: gitea_runner | ||||||
							
								
								
									
										5
									
								
								infrastructure/services/gitea/env/gitea-runner.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								infrastructure/services/gitea/env/gitea-runner.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,5 @@ | |||||||
|  | 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
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								infrastructure/services/gitea/env/gitea.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										4
									
								
								infrastructure/services/gitea/env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/services/gitea/env/gitea_db.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | MARIADB_ROOT_PASSWORD=xpc4zIhHZzWKqVHcjBu4aW6aS7jG8d7X | ||||||
|  | MARIADB_USER=bensuperpc | ||||||
|  | MARIADB_PASSWORD=K7s5yoHknnEd7vsZoxb8I3dK9mjToF1j | ||||||
|  | MARIADB_DATABASE=gitea | ||||||
							
								
								
									
										51
									
								
								infrastructure/services/homepage/config/bookmarks.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								infrastructure/services/homepage/config/bookmarks.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | --- | ||||||
|  | # 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 | ||||||
							
								
								
									
										0
									
								
								infrastructure/services/homepage/config/custom.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								infrastructure/services/homepage/config/custom.js
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										10
									
								
								infrastructure/services/homepage/config/docker.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								infrastructure/services/homepage/config/docker.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | --- | ||||||
|  | # For configuration options and examples, please see: | ||||||
|  | # https://gethomepage.dev/configs/docker | ||||||
|  |  | ||||||
|  | #jellyfin: | ||||||
|  | #  host: jellyfin | ||||||
|  | #  port: 8096 | ||||||
|  |  | ||||||
|  | #my-docker: | ||||||
|  | #   socket: /var/run/docker.sock | ||||||
							
								
								
									
										2
									
								
								infrastructure/services/homepage/config/kubernetes.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/services/homepage/config/kubernetes.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | --- | ||||||
|  | # sample kubernetes config | ||||||
							
								
								
									
										4
									
								
								infrastructure/services/homepage/config/proxmox.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								infrastructure/services/homepage/config/proxmox.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,4 @@ | |||||||
|  | --- | ||||||
|  | # url: https://proxmox.host.or.ip:8006 | ||||||
|  | # token: username@pam!Token ID | ||||||
|  | # secret: secret | ||||||
							
								
								
									
										145
									
								
								infrastructure/services/homepage/config/services.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										145
									
								
								infrastructure/services/homepage/config/services.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,145 @@ | |||||||
|  | --- | ||||||
|  | # 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 | ||||||
|  |  | ||||||
							
								
								
									
										58
									
								
								infrastructure/services/homepage/config/settings.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								infrastructure/services/homepage/config/settings.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,58 @@ | |||||||
|  | --- | ||||||
|  | # 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 | ||||||
							
								
								
									
										37
									
								
								infrastructure/services/homepage/config/widgets.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								infrastructure/services/homepage/config/widgets.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | --- | ||||||
|  | # 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 | ||||||
							
								
								
									
										33
									
								
								infrastructure/services/homepage/docker-compose.homepage.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								infrastructure/services/homepage/docker-compose.homepage.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,33 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										3
									
								
								infrastructure/services/homepage/env/homepage.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/services/homepage/env/homepage.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | PSITRANSFER_ADMIN_PASS=n9jLVNT9QUotTJTT91JqH4GyBTg9pvEn | ||||||
|  | #PSITRANSFER_PORT=3000 | ||||||
|  | HOMEPAGE_ALLOWED_HOSTS=www.bensuperpc.org | ||||||
							
								
								
									
										
											BIN
										
									
								
								infrastructure/services/homepage/image/background.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								infrastructure/services/homepage/image/background.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 569 KiB | 
							
								
								
									
										
											BIN
										
									
								
								infrastructure/services/homepage/image/daisy.jpg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								infrastructure/services/homepage/image/daisy.jpg
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 51 KiB | 
							
								
								
									
										
											BIN
										
									
								
								infrastructure/services/homepage/image/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								infrastructure/services/homepage/image/favicon.ico
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 295 KiB | 
							
								
								
									
										51
									
								
								infrastructure/services/it-tools/docker-compose.it-tools.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								infrastructure/services/it-tools/docker-compose.it-tools.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										37
									
								
								infrastructure/services/jellyfin/docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								infrastructure/services/jellyfin/docker-compose.jellyfin.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | 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 | ||||||
							
								
								
									
										2
									
								
								infrastructure/services/jellyfin/env/jellyfin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								infrastructure/services/jellyfin/env/jellyfin.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | |||||||
|  | TZ=Etc/UTC | ||||||
|  | DOCKER_MODS=linuxserver/mods:jellyfin-opencl-intel | ||||||
							
								
								
									
										34
									
								
								infrastructure/services/main/docker-compose.main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								infrastructure/services/main/docker-compose.main.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | services: | ||||||
|  |   main_infrastructure: | ||||||
|  |     container_name: main_infrastructure | ||||||
|  |     image: alpine:latest | ||||||
|  |     profiles: | ||||||
|  |       - main_infrastructure | ||||||
|  |     volumes: | ||||||
|  |       - public_data:/public_data:rw | ||||||
|  |       - private_data:/private_data:rw | ||||||
|  |     read_only: true | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |     cap_drop: | ||||||
|  |       - ALL | ||||||
|  |     cap_add: | ||||||
|  |       - CHOWN | ||||||
|  |       - DAC_OVERRIDE | ||||||
|  |     # Fix root permissions on mounted volumes | ||||||
|  |     command: chown -R ${PUID:-1000}:${PGID:-1000} /public_data /private_data | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   public_data: | ||||||
|  |     name: public_data | ||||||
|  |   private_data: | ||||||
|  |     name: private_data | ||||||
|  |  | ||||||
|  | networks: | ||||||
|  |   infra-network: | ||||||
|  |     driver: bridge | ||||||
|  |     name: infra-network | ||||||
|  |   intern-network: | ||||||
|  |     driver: bridge | ||||||
|  |     internal: true | ||||||
|  |     name: intern-network | ||||||
							
								
								
									
										22
									
								
								infrastructure/services/memos/docker-compose.memos.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								infrastructure/services/memos/docker-compose.memos.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | |||||||
|  | services: | ||||||
|  |   # memos | ||||||
|  |   memos: | ||||||
|  |     image: neosmemo/memos:latest | ||||||
|  |     container_name: memos | ||||||
|  |     profiles: | ||||||
|  |       - memos | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - ./env/memos.env | ||||||
|  |     volumes: | ||||||
|  |       - memos_config:/var/opt/memos | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   memos_config: | ||||||
|  |     name: memos_config | ||||||
							
								
								
									
										1
									
								
								infrastructure/services/memos/env/memos.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								infrastructure/services/memos/env/memos.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								infrastructure/services/minecraft-server
									
									
									
									
									
										Submodule
									
								
							
							
								
								
								
								
								
							
						
						
									
										1
									
								
								infrastructure/services/minecraft-server
									
									
									
									
									
										Submodule
									
								
							 Submodule infrastructure/services/minecraft-server added at d9509579ca
									
								
							| @@ -0,0 +1,51 @@ | |||||||
|  | services: | ||||||
|  |   # omni-tools | ||||||
|  |   omni-tools0: | ||||||
|  |     image: iib0011/omni-tools:latest | ||||||
|  |     container_name: omni-tools0 | ||||||
|  |     profiles: | ||||||
|  |       - omni-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 | ||||||
|  |  | ||||||
|  |   omni-tools1: | ||||||
|  |     image: iib0011/omni-tools:latest | ||||||
|  |     container_name: omni-tools1 | ||||||
|  |     profiles: | ||||||
|  |       - omni-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 | ||||||
| @@ -0,0 +1,42 @@ | |||||||
|  | services: | ||||||
|  |   ollama: | ||||||
|  |     image: ollama/ollama:latest | ||||||
|  |     #platform: linux/amd64 | ||||||
|  |     container_name: ollama | ||||||
|  |     profiles: | ||||||
|  |       - open-webui | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     tty: true | ||||||
|  |     volumes: | ||||||
|  |       - ollama:/root/.ollama | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |  | ||||||
|  |   open-webui: | ||||||
|  |     image: ghcr.io/open-webui/open-webui:main | ||||||
|  |     container_name: open-webui | ||||||
|  |     profiles: | ||||||
|  |       - open-webui | ||||||
|  |     volumes: | ||||||
|  |       - open-webui:/app/backend/data | ||||||
|  |     depends_on: | ||||||
|  |       - ollama | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - ./env/open-webui.env | ||||||
|  |     #environment: | ||||||
|  |     #  - UID=${PUID:-1000} | ||||||
|  |     #  - GID=${PGID:-1000} | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   ollama: {} | ||||||
|  |   open-webui: {} | ||||||
							
								
								
									
										16
									
								
								infrastructure/services/open-webui/env/open-webui.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								infrastructure/services/open-webui/env/open-webui.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | OLLAMA_BASE_URL=http://ollama:11434 | ||||||
|  | #WEBUI_SECRET_KEY= | ||||||
|  | #HF_HUB_OFFLINE=1 | ||||||
|  | # Disable analytics | ||||||
|  | SCARF_NO_ANALYTICS=true | ||||||
|  | DO_NOT_TRACK=true | ||||||
|  | ANONYMIZED_TELEMETRY=false | ||||||
|  |  | ||||||
|  | #OPENAI_API_BASE_URL= | ||||||
|  | #OPENAI_API_KEY= | ||||||
|  |  | ||||||
|  | # Only with stable-diffusion-webui | ||||||
|  | #ENABLE_IMAGE_GENERATION=true | ||||||
|  | #AUTOMATIC1111_BASE_URL=http://stable-diffusion-webui:7860 | ||||||
|  | #IMAGE_SIZE=64x64 | ||||||
|  | #IMAGE_STEPS=3 | ||||||
| @@ -0,0 +1 @@ | |||||||
|  | ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHVtzpnPr0Boy+bUbL+viOYfqeetDZF6Hu40EwNLXNb0 bensuperpc@gmail.com | ||||||
							
								
								
									
										104
									
								
								infrastructure/services/openssh/docker-compose.openssh.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										104
									
								
								infrastructure/services/openssh/docker-compose.openssh.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,104 @@ | |||||||
|  | services: | ||||||
|  |   # openssh | ||||||
|  |   openssh: | ||||||
|  |     image: linuxserver/openssh-server:latest | ||||||
|  |     container_name: openssh | ||||||
|  |     profiles: | ||||||
|  |       - openssh | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     env_file: | ||||||
|  |       - ./env/openssh.env | ||||||
|  |     environment: | ||||||
|  |       - PUID=${PUID:-1000} | ||||||
|  |       - PGID=${PGID:-1000} | ||||||
|  |     volumes: | ||||||
|  |       - openssh_config:/config:rw | ||||||
|  |       - ./config/authorized_keys:/authorized_ssh_keys:ro | ||||||
|  |       - public_data:/public_data:rw | ||||||
|  |       - private_data:/private_data:rw | ||||||
|  |       - caddy_data:/caddy_data:rw | ||||||
|  |       - caddy_config:/caddy_config:rw | ||||||
|  |       - caddy_backup:/caddy_backup:rw | ||||||
|  |       - 7daystodie_backup:/7daystodie_backup:rw | ||||||
|  |       - 7daystodie_server_save:/7daystodie_server_save:rw | ||||||
|  |       - 7daystodie_server_config_lgsm:/7daystodie_server_config_lgsm:rw | ||||||
|  |       - 7daystodie_server_file:/7daystodie_server_file:rw | ||||||
|  |       - 7daystodie_server_log:/7daystodie_server_log:rw | ||||||
|  |       - satisfactory_backup:/satisfactory_backup:rw | ||||||
|  |       - satisfactory_server_config:/satisfactory_server_config:rw | ||||||
|  |       - minecraft_server_backup:/minecraft_server_backup:rw | ||||||
|  |       - minecraft_server_data:/minecraft_server_data:rw | ||||||
|  |       - minecraft_proxy_data:/minecraft_proxy_data:rw | ||||||
|  |       - minecraft_rcon_data:/minecraft_rcon_data:rw | ||||||
|  |       - forgejo_data:/forgejo_data:rw | ||||||
|  |       - forgejo_config:/forgejo_config:rw | ||||||
|  |       - forgejo_db:/forgejo_db:rw | ||||||
|  |       - gitea_data:/gitea_data:rw | ||||||
|  |       - gitea_config:/gitea_config:rw | ||||||
|  |       - gitea_db:/gitea_db:rw | ||||||
|  |       - teamfortress2_backup:/teamfortress2_backup:rw | ||||||
|  |       - teamfortress2_data:/teamfortress2_data:rw | ||||||
|  |  | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:false | ||||||
|  |     ports: | ||||||
|  |       - 2222:2222 | ||||||
|  | volumes: | ||||||
|  |   openssh_config: | ||||||
|  |     name: openssh_config | ||||||
|  |   public_data: | ||||||
|  |     name: public_data | ||||||
|  |   private_data: | ||||||
|  |     name: private_data | ||||||
|  |   caddy_data: | ||||||
|  |     name: caddy_data | ||||||
|  |   caddy_config: | ||||||
|  |     name: caddy_config | ||||||
|  |   caddy_backup: | ||||||
|  |     name: caddy_backup | ||||||
|  | # 7daystodie-server | ||||||
|  |   7daystodie_backup: | ||||||
|  |     name: 7daystodie_backup | ||||||
|  |   7daystodie_server_save: | ||||||
|  |     name: 7daystodie_server_save | ||||||
|  |   7daystodie_server_config_lgsm: | ||||||
|  |     name: 7daystodie_server_config_lgsm | ||||||
|  |   7daystodie_server_file: | ||||||
|  |     name: 7daystodie_server_file | ||||||
|  |   7daystodie_server_log: | ||||||
|  |     name: 7daystodie_server_log | ||||||
|  | # satisfactory-server | ||||||
|  |   satisfactory_backup: | ||||||
|  |     name: satisfactory_backup | ||||||
|  |   satisfactory_server_config: | ||||||
|  |     name: satisfactory_server_config | ||||||
|  | # minecraft-server | ||||||
|  |   minecraft_server_backup: | ||||||
|  |     name: minecraft_server_backup | ||||||
|  |   minecraft_server_data: | ||||||
|  |     name: minecraft_server_data | ||||||
|  |   minecraft_proxy_data: | ||||||
|  |     name: minecraft_proxy_data | ||||||
|  |   minecraft_rcon_data: | ||||||
|  |     name: minecraft_rcon_data | ||||||
|  | # teamfortress2 | ||||||
|  |   teamfortress2_backup: | ||||||
|  |     name: teamfortress2_backup | ||||||
|  |   teamfortress2_data: | ||||||
|  |     name: teamfortress2_data | ||||||
|  | # forgejo | ||||||
|  |   forgejo_data: | ||||||
|  |     name: forgejo_data | ||||||
|  |   forgejo_config: | ||||||
|  |     name: forgejo_config | ||||||
|  |   forgejo_db: | ||||||
|  |     name: forgejo_db | ||||||
|  | # gitea | ||||||
|  |   gitea_data: | ||||||
|  |     name: gitea_data | ||||||
|  |   gitea_config: | ||||||
|  |     name: gitea_config | ||||||
|  |   gitea_db: | ||||||
|  |     name: gitea_db | ||||||
							
								
								
									
										15
									
								
								infrastructure/services/openssh/env/openssh.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								infrastructure/services/openssh/env/openssh.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | TZ=Etc/UTC | ||||||
|  | SUDO_ACCESS=true | ||||||
|  | PASSWORD_ACCESS=false | ||||||
|  | DOCKER_MODS=linuxserver/mods:openssh-server-rsync | ||||||
|  | #PUBLIC_KEY_URL=https://github.com/bensuperpc.keys | ||||||
|  | PUBLIC_KEY_DIR=/authorized_ssh_keys | ||||||
|  | USER_NAME=admin | ||||||
|  | USER_PASSWORD=rdUwf36C11PLmpU9Lvq7tP5pfFBKAuCh | ||||||
|  |  | ||||||
|  | #PUBLIC_KEY=yourpublickey | ||||||
|  | #PUBLIC_KEY_FILE=/path/to/file | ||||||
|  | #PUBLIC_KEY_DIR=/path/to/directory/containing/_only_/pubkeys | ||||||
|  | #PUBLIC_KEY_URL=https://github.com/username.keys | ||||||
|  | #USER_PASSWORD_FILE=/path/to/file | ||||||
|  | #LOG_STDOUT= | ||||||
| @@ -0,0 +1,35 @@ | |||||||
|  | services: | ||||||
|  |   # picoshare | ||||||
|  |   picoshare: | ||||||
|  |     image: mtlynch/picoshare:latest | ||||||
|  |     container_name: picoshare | ||||||
|  |     profiles: | ||||||
|  |       - picoshare | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - ./env/picoshare.env | ||||||
|  |     volumes: | ||||||
|  |       - picoshare_data:/data | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |     read_only: false | ||||||
|  |     cap_drop: | ||||||
|  |       - SYS_ADMIN | ||||||
|  | #    tmpfs: | ||||||
|  | #      - /tmp | ||||||
|  |     deploy: | ||||||
|  |       resources: | ||||||
|  |         limits: | ||||||
|  |           cpus: '0.5' | ||||||
|  |           memory: 512M | ||||||
|  |         reservations: | ||||||
|  |           cpus: '0.001' | ||||||
|  |           memory: 20M | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   picoshare_data: | ||||||
|  |     name: picoshare_data | ||||||
							
								
								
									
										3
									
								
								infrastructure/services/picoshare/env/picoshare.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								infrastructure/services/picoshare/env/picoshare.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | |||||||
|  | PS_SHARED_SECRET=CBuS4DJLqIe93xF1KGYRrnhxUFBqLD2n | ||||||
|  | PORT=4001 | ||||||
|  | PS_BEHIND_PROXY=true | ||||||
							
								
								
									
										298
									
								
								infrastructure/services/privatebin/config/conf.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										298
									
								
								infrastructure/services/privatebin/config/conf.php
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,298 @@ | |||||||
|  | ;<?php http_response_code(403); /* | ||||||
|  | ; config file for PrivateBin | ||||||
|  | ; | ||||||
|  | ; An explanation of each setting can be find online at https://github.com/PrivateBin/PrivateBin/wiki/Configuration. | ||||||
|  |  | ||||||
|  | [main] | ||||||
|  | ; (optional) set a project name to be displayed on the website | ||||||
|  | ; name = "PrivateBin" | ||||||
|  |  | ||||||
|  | ; The full URL, with the domain name and directories that point to the | ||||||
|  | ; PrivateBin files, including an ending slash (/). This URL is essential to | ||||||
|  | ; allow Opengraph images to be displayed on social networks. | ||||||
|  | ; basepath = "https://privatebin.example.com/" | ||||||
|  |  | ||||||
|  | ; enable or disable the discussion feature, defaults to true | ||||||
|  | discussion = true | ||||||
|  |  | ||||||
|  | ; preselect the discussion feature, defaults to false | ||||||
|  | opendiscussion = false | ||||||
|  |  | ||||||
|  | ; enable or disable the display of dates & times in the comments, defaults to true | ||||||
|  | ; Note that internally the creation time will still get tracked in order to sort | ||||||
|  | ; the comments by creation time, but you can choose not to display them. | ||||||
|  | ; discussiondatedisplay = false | ||||||
|  |  | ||||||
|  | ; enable or disable the password feature, defaults to true | ||||||
|  | password = true | ||||||
|  |  | ||||||
|  | ; enable or disable the file upload feature, defaults to false | ||||||
|  | fileupload = false | ||||||
|  |  | ||||||
|  | ; preselect the burn-after-reading feature, defaults to false | ||||||
|  | burnafterreadingselected = false | ||||||
|  |  | ||||||
|  | ; which display mode to preselect by default, defaults to "plaintext" | ||||||
|  | ; make sure the value exists in [formatter_options] | ||||||
|  | defaultformatter = "plaintext" | ||||||
|  |  | ||||||
|  | ; (optional) set a syntax highlighting theme, as found in css/prettify/ | ||||||
|  | ; syntaxhighlightingtheme = "sons-of-obsidian" | ||||||
|  |  | ||||||
|  | ; size limit per document or comment in bytes, defaults to 10 Megabytes | ||||||
|  | sizelimit = 10000000 | ||||||
|  |  | ||||||
|  | ; by default PrivateBin use "bootstrap5" template (tpl/bootstrap5.php). | ||||||
|  | ; Optionally you can enable the template selection menu, which uses | ||||||
|  | ; a session cookie to store the choice until the browser is closed. | ||||||
|  | templateselection = false | ||||||
|  |  | ||||||
|  | ; List of available for selection templates when "templateselection" option is enabled | ||||||
|  | availabletemplates[] = "bootstrap5" | ||||||
|  | availabletemplates[] = "bootstrap" | ||||||
|  | availabletemplates[] = "bootstrap-page" | ||||||
|  | availabletemplates[] = "bootstrap-dark" | ||||||
|  | availabletemplates[] = "bootstrap-dark-page" | ||||||
|  | availabletemplates[] = "bootstrap-compact" | ||||||
|  | availabletemplates[] = "bootstrap-compact-page" | ||||||
|  |  | ||||||
|  | ; set the template your installs defaults to, defaults to "bootstrap5" (tpl/bootstrap5.php), also | ||||||
|  | ; bootstrap template (tpl/bootstrap.php) and it's variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page", | ||||||
|  | ; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page", | ||||||
|  | ; "bootstrap-compact-page" - previews at: | ||||||
|  | ; https://privatebin.info/screenshots.html | ||||||
|  | ; template = "bootstrap5" | ||||||
|  |  | ||||||
|  | ; (optional) info text to display | ||||||
|  | ; use single, instead of double quotes for HTML attributes | ||||||
|  | ;info = "More information on the <a href='https://privatebin.info/'>project page</a>." | ||||||
|  |  | ||||||
|  | ; (optional) notice to display | ||||||
|  | ; notice = "Note: This is a test service: Data may be deleted anytime. Kittens will die if you abuse this service." | ||||||
|  |  | ||||||
|  | ; by default PrivateBin will guess the visitors language based on the browsers | ||||||
|  | ; settings. Optionally you can enable the language selection menu, which uses | ||||||
|  | ; a session cookie to store the choice until the browser is closed. | ||||||
|  | languageselection = false | ||||||
|  |  | ||||||
|  | ; set the language your installs defaults to, defaults to English | ||||||
|  | ; if this is set and language selection is disabled, this will be the only language | ||||||
|  | ; languagedefault = "en" | ||||||
|  |  | ||||||
|  | ; (optional) URL shortener address to offer after a new document is created. | ||||||
|  | ; It is suggested to only use this with self-hosted shorteners as this will leak | ||||||
|  | ; the documents encryption key. | ||||||
|  | ; urlshortener = "https://shortener.example.com/api?link=" | ||||||
|  |  | ||||||
|  | ; (optional) Whether to shorten the URL by default when a new document is created. | ||||||
|  | ; If set to true, the "Shorten URL" functionality will be automatically called. | ||||||
|  | ; This only works if the "urlshortener" option is set. | ||||||
|  | ; shortenbydefault = false | ||||||
|  |  | ||||||
|  | ; (optional) Let users create a QR code for sharing the document URL with one click. | ||||||
|  | ; It works both when a new document is created and when you view a document. | ||||||
|  | ; qrcode = true | ||||||
|  |  | ||||||
|  | ; (optional) Let users send an email sharing the document URL with one click. | ||||||
|  | ; It works both when a new document is created and when you view a document. | ||||||
|  | ; email = true | ||||||
|  |  | ||||||
|  | ; (optional) IP based icons are a weak mechanism to detect if a comment was from | ||||||
|  | ; a different user when the same username was used in a comment. It might get | ||||||
|  | ; used to get the IP of a comment poster if the server salt is leaked and a | ||||||
|  | ; SHA512 HMAC rainbow table is generated for all (relevant) IPs. | ||||||
|  | ; Can be set to one these values: | ||||||
|  | ; "none" / "identicon" / "jdenticon" (default) / "vizhash". | ||||||
|  | ; icon = "none" | ||||||
|  |  | ||||||
|  | ; Content Security Policy headers allow a website to restrict what sources are | ||||||
|  | ; allowed to be accessed in its context. You need to change this if you added | ||||||
|  | ; custom scripts from third-party domains to your templates, e.g. tracking | ||||||
|  | ; scripts or run your site behind certain DDoS-protection services. | ||||||
|  | ; Check the documentation at https://content-security-policy.com/ | ||||||
|  | ; Notes: | ||||||
|  | ; - By default this disallows to load images from third-party servers, e.g. when | ||||||
|  | ;   they are embedded in documents. If you wish to allow that, you can adjust the | ||||||
|  | ;   policy here. See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-not-it-load-embedded-images | ||||||
|  | ;   for details. | ||||||
|  | ; - The 'wasm-unsafe-eval' is used to enable webassembly support (used for zlib | ||||||
|  | ;   compression). You can remove it if compression doesn't need to be supported. | ||||||
|  | ; - The 'unsafe-inline' style-src is used by Chrome when displaying PDF previews | ||||||
|  | ;   and can be omitted if attachment upload is disabled (which is the default). | ||||||
|  | ;   See https://issues.chromium.org/issues/343754409 | ||||||
|  | ; - To allow displaying PDF previews in Firefox or Chrome, sandboxing must also | ||||||
|  | ;   get turned off. The following CSP allows PDF previews: | ||||||
|  | ; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:" | ||||||
|  | ; | ||||||
|  | ; The recommended and default used CSP is: | ||||||
|  | ; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads" | ||||||
|  |  | ||||||
|  | ; Enable or disable the warning message when the site is served over an insecure | ||||||
|  | ; connection (insecure HTTP instead of HTTPS), defaults to true. | ||||||
|  | ; Secure transport methods like Tor and I2P domains are automatically whitelisted. | ||||||
|  | ; It is **strongly discouraged** to disable this. | ||||||
|  | ; See https://github.com/PrivateBin/PrivateBin/wiki/FAQ#why-does-it-show-me-an-error-about-an-insecure-connection for more information. | ||||||
|  | ; httpwarning = true | ||||||
|  |  | ||||||
|  | ; Pick compression algorithm or disable it. Only applies to documents & comments | ||||||
|  | ; created after changing the setting. | ||||||
|  | ; Can be set to one these values: "none" / "zlib" (default). | ||||||
|  | ; compression = "zlib" | ||||||
|  |  | ||||||
|  | [expire] | ||||||
|  | ; expire value that is selected per default | ||||||
|  | ; make sure the value exists in [expire_options] | ||||||
|  | default = "1week" | ||||||
|  |  | ||||||
|  | [expire_options] | ||||||
|  | ; Set each one of these to the number of seconds in the expiration period, | ||||||
|  | ; or 0 if it should never expire | ||||||
|  | 5min = 300 | ||||||
|  | 10min = 600 | ||||||
|  | 1hour = 3600 | ||||||
|  | 1day = 86400 | ||||||
|  | 1week = 604800 | ||||||
|  | ; Well this is not *exactly* one month, it's 30 days: | ||||||
|  | 1month = 2592000 | ||||||
|  | 1year = 31536000 | ||||||
|  | never = 0 | ||||||
|  |  | ||||||
|  | [formatter_options] | ||||||
|  | ; Set available formatters, their order and their labels | ||||||
|  | plaintext = "Plain Text" | ||||||
|  | syntaxhighlighting = "Source Code" | ||||||
|  | markdown = "Markdown" | ||||||
|  |  | ||||||
|  | [traffic] | ||||||
|  | ; time limit between calls from the same IP address in seconds | ||||||
|  | ; Set this to 0 to disable rate limiting. | ||||||
|  | limit = 10 | ||||||
|  |  | ||||||
|  | ; (optional) Set IPs addresses (v4 or v6) or subnets (CIDR) which are exempted | ||||||
|  | ; from the rate-limit. Invalid IPs will be ignored. If multiple values are to | ||||||
|  | ; be exempted, the list needs to be comma separated. Leave unset to disable | ||||||
|  | ; exemptions. | ||||||
|  | ; exempted = "1.2.3.4,10.10.10/24" | ||||||
|  |  | ||||||
|  | ; (optional) If you want only some source IP addresses (v4 or v6) or subnets | ||||||
|  | ; (CIDR) to be allowed to create documents, set these here. Invalid IPs will be | ||||||
|  | ; ignored. If multiple values are to be exempted, the list needs to be comma | ||||||
|  | ; separated. Leave unset to allow anyone to create documents. | ||||||
|  | ; creators = "1.2.3.4,10.10.10/24" | ||||||
|  |  | ||||||
|  | ; (optional) if your website runs behind a reverse proxy or load balancer, | ||||||
|  | ; set the HTTP header containing the visitors IP address, i.e. X_FORWARDED_FOR | ||||||
|  | ; header = "X_FORWARDED_FOR" | ||||||
|  |  | ||||||
|  | [purge] | ||||||
|  | ; minimum time limit between two purgings of expired documents, it is only | ||||||
|  | ; checked when documents get created | ||||||
|  | ; Set this to 0 to run a purge every time a document is created. | ||||||
|  | limit = 300 | ||||||
|  |  | ||||||
|  | ; maximum amount of expired documents to delete in one purge | ||||||
|  | ; Set this to 0 to disable purging. Set it higher, if you are running a large | ||||||
|  | ; site | ||||||
|  | batchsize = 10 | ||||||
|  |  | ||||||
|  | [model] | ||||||
|  | ; name of data model class to load and directory for storage | ||||||
|  | ; the default model "Filesystem" stores everything in the filesystem | ||||||
|  | class = Filesystem | ||||||
|  | [model_options] | ||||||
|  | dir = PATH "data" | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of a Google Cloud Storage configuration | ||||||
|  | ;class = GoogleCloudStorage | ||||||
|  | ;[model_options] | ||||||
|  | ;bucket = "my-private-bin" | ||||||
|  | ;prefix = "pastes" | ||||||
|  | ;uniformacl = false | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of DB configuration for MySQL | ||||||
|  | ;class = Database | ||||||
|  | ;[model_options] | ||||||
|  | ;dsn = "mysql:host=localhost;dbname=privatebin;charset=UTF8" | ||||||
|  | ;tbl = "privatebin_"	; table prefix | ||||||
|  | ;usr = "privatebin" | ||||||
|  | ;pwd = "Z3r0P4ss" | ||||||
|  | ;opt[12] = true	  ; PDO::ATTR_PERSISTENT | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of DB configuration for SQLite | ||||||
|  | ;class = Database | ||||||
|  | ;[model_options] | ||||||
|  | ;dsn = "sqlite:" PATH "data/db.sq3" | ||||||
|  | ;usr = null | ||||||
|  | ;pwd = null | ||||||
|  | ;opt[12] = true	; PDO::ATTR_PERSISTENT | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of DB configuration for PostgreSQL | ||||||
|  | ;class = Database | ||||||
|  | ;[model_options] | ||||||
|  | ;dsn = "pgsql:host=localhost;dbname=privatebin" | ||||||
|  | ;tbl = "privatebin_"     ; table prefix | ||||||
|  | ;usr = "privatebin" | ||||||
|  | ;pwd = "Z3r0P4ss" | ||||||
|  | ;opt[12] = true    ; PDO::ATTR_PERSISTENT | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of S3 configuration for Rados gateway / CEPH | ||||||
|  | ;class = S3Storage | ||||||
|  | ;[model_options] | ||||||
|  | ;region = "" | ||||||
|  | ;version = "2006-03-01" | ||||||
|  | ;endpoint = "https://s3.my-ceph.invalid" | ||||||
|  | ;use_path_style_endpoint = true | ||||||
|  | ;bucket = "my-bucket" | ||||||
|  | ;accesskey = "my-rados-user" | ||||||
|  | ;secretkey = "my-rados-pass" | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of S3 configuration for AWS | ||||||
|  | ;class = S3Storage | ||||||
|  | ;[model_options] | ||||||
|  | ;region = "eu-central-1" | ||||||
|  | ;version = "latest" | ||||||
|  | ;bucket = "my-bucket" | ||||||
|  | ;accesskey = "access key id" | ||||||
|  | ;secretkey = "secret access key" | ||||||
|  |  | ||||||
|  | ;[model] | ||||||
|  | ; example of S3 configuration for AWS using its SDK default credential provider chain | ||||||
|  | ; if relying on environment variables, the AWS SDK will look for the following: | ||||||
|  | ; - AWS_ACCESS_KEY_ID | ||||||
|  | ; - AWS_SECRET_ACCESS_KEY | ||||||
|  | ; - AWS_SESSION_TOKEN (if needed) | ||||||
|  | ; for more details, see https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials.html#default-credential-chain | ||||||
|  | ;class = S3Storage | ||||||
|  | ;[model_options] | ||||||
|  | ;region = "eu-central-1" | ||||||
|  | ;version = "latest" | ||||||
|  | ;bucket = "my-bucket" | ||||||
|  |  | ||||||
|  | ;[yourls] | ||||||
|  | ; When using YOURLS as a "urlshortener" config item: | ||||||
|  | ; - By default, "urlshortener" will point to the YOURLS API URL, with or without | ||||||
|  | ;   credentials, and will be visible in public on the PrivateBin web page. | ||||||
|  | ;   Only use this if you allow short URL creation without credentials. | ||||||
|  | ; - Alternatively, using the parameters in this section ("signature" and | ||||||
|  | ;   "apiurl"), "urlshortener" needs to point to the base URL of your PrivateBin | ||||||
|  | ;   instance with "?shortenviayourls&link=" appended. For example: | ||||||
|  | ;   urlshortener = "${basepath}?shortenviayourls&link=" | ||||||
|  | ;   This URL will in turn call YOURLS on the server side, using the URL from | ||||||
|  | ;   "apiurl" and the "access signature" from the "signature" parameters below. | ||||||
|  |  | ||||||
|  | ; (optional) the "signature" (access key) issued by YOURLS for the using account | ||||||
|  | ; signature = "" | ||||||
|  | ; (optional) the URL of the YOURLS API, called to shorten a PrivateBin URL | ||||||
|  | ; apiurl = "https://yourls.example.com/yourls-api.php" | ||||||
|  |  | ||||||
|  | ;[sri] | ||||||
|  | ; Subresource integrity (SRI) hashes used in template files. Uncomment and set | ||||||
|  | ; these for all js files used. See: | ||||||
|  | ; https://github.com/PrivateBin/PrivateBin/wiki/FAQ#user-content-how-to-make-privatebin-work-when-i-have-changed-some-javascript-files | ||||||
|  | ;js/privatebin.js = "sha512-[…]" | ||||||
| @@ -0,0 +1,30 @@ | |||||||
|  | services: | ||||||
|  |   # privatebin | ||||||
|  |   privatebin: | ||||||
|  |     image: privatebin/nginx-fpm-alpine:latest | ||||||
|  |     container_name: privatebin | ||||||
|  |     profiles: | ||||||
|  |       - privatebin | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     volumes: | ||||||
|  |       - privatebin_data:/srv/data | ||||||
|  |       - ./config/conf.php:/srv/cfg/conf.php:ro | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |     read_only: true | ||||||
|  |     deploy: | ||||||
|  |       resources: | ||||||
|  |         limits: | ||||||
|  |           cpus: '0.5' | ||||||
|  |           memory: 512M | ||||||
|  |         reservations: | ||||||
|  |           cpus: '0.001' | ||||||
|  |           memory: 20M | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   privatebin_data: | ||||||
|  |     name: privatebin_data | ||||||
| @@ -0,0 +1,50 @@ | |||||||
|  | services: | ||||||
|  |   # projectsend | ||||||
|  |   projectsend: | ||||||
|  |     image: linuxserver/projectsend:latest | ||||||
|  |     container_name: projectsend | ||||||
|  |     profiles: | ||||||
|  |       - projectsend | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     env_file: | ||||||
|  |       - ./env/projectsend.env | ||||||
|  |     volumes: | ||||||
|  |       - /var/run/docker.sock:/var/run/docker.sock | ||||||
|  |       - projectsend_config:/config | ||||||
|  |       - projectsend_share:/data | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |     cap_drop: | ||||||
|  |       - SYS_ADMIN | ||||||
|  |  | ||||||
|  |   # Database projectsend | ||||||
|  |   projectsend_db: | ||||||
|  |     image: mariadb:latest | ||||||
|  |     container_name: projectsend_db | ||||||
|  |     profiles: | ||||||
|  |       - database | ||||||
|  |       - projectsend | ||||||
|  |     depends_on: | ||||||
|  |       - caddy | ||||||
|  |     restart: on-failure:5 | ||||||
|  |     volumes: | ||||||
|  |       - projectsend_db:/var/lib/mysql:rw | ||||||
|  |     env_file: | ||||||
|  |       - ./env/projectsend_db.env | ||||||
|  |     command: '--default-authentication-plugin=mysql_native_password' | ||||||
|  |     networks: | ||||||
|  |       - infra-network | ||||||
|  |     security_opt: | ||||||
|  |       - no-new-privileges:true | ||||||
|  |  | ||||||
|  | volumes: | ||||||
|  |   projectsend_db: | ||||||
|  |     name: projectsend_db | ||||||
|  |   projectsend_config: | ||||||
|  |     name: projectsend_config | ||||||
|  |   projectsend_share: | ||||||
|  |     name: projectsend_share | ||||||
							
								
								
									
										1
									
								
								infrastructure/services/projectsend/env/projectsend.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								infrastructure/services/projectsend/env/projectsend.env
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1 @@ | |||||||
|  | MAX_UPLOAD=50000 | ||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user