Compare commits
	
		
			19 Commits
		
	
	
		
			78ab4aa15a
			...
			main
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 43b4cbda62 | |||
| 6241b70632 | |||
| 285b437bde | |||
| 
						 | 
					028cc0e8d5 | ||
| 
						 | 
					385c342087 | ||
| 
						 | 
					4d9d6830d4 | ||
| 
						 | 
					5dcb90377d | ||
| 
						 | 
					dcb95c63a9 | ||
| 07c97a103e | |||
| 019b71610e | |||
| 
						 | 
					b9d6c4ccfa | ||
| d3571e2bc7 | |||
| 7c859bbcf5 | |||
| 
						 | 
					9dec2ded89 | ||
| 
						 | 
					7a0705c4d3 | ||
| 
						 | 
					b3bd53fddc | ||
| 06f1abe34b | |||
| e3698f3626 | |||
| 16305734e0 | 
							
								
								
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
/Revolt/data
 | 
			
		||||
/OpenWebUI/open-webui
 | 
			
		||||
/uptime-kuma/data
 | 
			
		||||
/FileBrowser/database.db
 | 
			
		||||
/Pacoloco/cache/
 | 
			
		||||
 | 
			
		||||
/Jellyfin/cache/
 | 
			
		||||
/Jellyfin/config/
 | 
			
		||||
 | 
			
		||||
/qBittorrent/config/
 | 
			
		||||
/qBittorrent/qbit-config/
 | 
			
		||||
 | 
			
		||||
/Caddy/tempo-storage
 | 
			
		||||
/Caddy/grafana-storage
 | 
			
		||||
							
								
								
									
										23
									
								
								Caddy/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								Caddy/Caddyfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,23 @@
 | 
			
		||||
{
 | 
			
		||||
	admin :2019
 | 
			
		||||
 | 
			
		||||
	servers :80 {
 | 
			
		||||
		name static_site
 | 
			
		||||
		metrics
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	servers :3000 {
 | 
			
		||||
		name grafana
 | 
			
		||||
		metrics
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
:80 {
 | 
			
		||||
	root * /path/to/html
 | 
			
		||||
	file_server
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
:3000 {
 | 
			
		||||
	reverse_proxy grafana:3000
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										3
									
								
								Caddy/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								Caddy/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,3 @@
 | 
			
		||||
This is almost production ready.
 | 
			
		||||
 | 
			
		||||
You would want to change the Caddyfile and also the Grafana config in the docker compose file. Currently it doesn't ask for credentials as just gives you admin privilages. Nice for testing tho.
 | 
			
		||||
							
								
								
									
										43
									
								
								Caddy/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								Caddy/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
services:
 | 
			
		||||
  # r-proxy, log generator
 | 
			
		||||
  caddy:
 | 
			
		||||
    image: caddy:latest
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    ports:
 | 
			
		||||
      - 80:80
 | 
			
		||||
      - 443:443
 | 
			
		||||
      - '443:443/udp'
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./Caddyfile:/etc/caddy/Caddyfile
 | 
			
		||||
 | 
			
		||||
  # log collector
 | 
			
		||||
  prometheus:
 | 
			
		||||
    image: prom/prometheus:latest
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./prometheus.yaml:/etc/prometheus/prometheus.yml
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - caddy
 | 
			
		||||
 | 
			
		||||
  # trace collector
 | 
			
		||||
  tempo:
 | 
			
		||||
    image: grafana/tempo:latest
 | 
			
		||||
    command: [ "-config.file=/opt/tempo.yaml" ] 
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./tempo.yaml:/opt/tempo.yaml
 | 
			
		||||
      - ./tempo-storage/:/var/tempo
 | 
			
		||||
 | 
			
		||||
  # log viewer
 | 
			
		||||
  grafana:
 | 
			
		||||
    image: grafana/grafana:latest
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./grafana.yaml:/etc/grafana/provisioning/datasources/datasources.yaml
 | 
			
		||||
      - ./grafana-storage/:/var/lib/grafana
 | 
			
		||||
    environment:
 | 
			
		||||
      - GF_AUTH_ANONYMOUS_ENABLED=true
 | 
			
		||||
      - GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
 | 
			
		||||
      - GF_AUTH_DISABLE_LOGIN_FORM=true
 | 
			
		||||
      - GF_FEATURE_TOGGLES_ENABLE=traceqlEditor
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - prometheus
 | 
			
		||||
      - tempo
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										29
									
								
								Caddy/grafana.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								Caddy/grafana.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
			
		||||
apiVersion: 1
 | 
			
		||||
 | 
			
		||||
datasources:
 | 
			
		||||
- name: Prometheus
 | 
			
		||||
  type: prometheus
 | 
			
		||||
  uid: prometheus
 | 
			
		||||
  access: proxy
 | 
			
		||||
  orgId: 1
 | 
			
		||||
  url: http://prometheus:9090
 | 
			
		||||
  basicAuth: false
 | 
			
		||||
  isDefault: false
 | 
			
		||||
  version: 1
 | 
			
		||||
  editable: false
 | 
			
		||||
  jsonData:
 | 
			
		||||
    httpMethod: GET
 | 
			
		||||
- name: Tempo
 | 
			
		||||
  type: tempo
 | 
			
		||||
  uid: tempo
 | 
			
		||||
  access: proxy
 | 
			
		||||
  orgId: 1
 | 
			
		||||
  url: http://tempo:3200
 | 
			
		||||
  basicAuth: false
 | 
			
		||||
  isDefault: false
 | 
			
		||||
  version: 1
 | 
			
		||||
  editable: false
 | 
			
		||||
  jsonData:
 | 
			
		||||
    httpMethod: GET
 | 
			
		||||
    serviceMap:
 | 
			
		||||
      datasourceUid: 'prometheus'
 | 
			
		||||
							
								
								
									
										8
									
								
								Caddy/prometheus.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Caddy/prometheus.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
global:
 | 
			
		||||
  scrape_interval: 15s # default is 1 minute
 | 
			
		||||
 | 
			
		||||
scrape_configs:
 | 
			
		||||
  - job_name: caddy
 | 
			
		||||
    static_configs:
 | 
			
		||||
      # docker networking
 | 
			
		||||
      - targets: ['caddy:2019']
 | 
			
		||||
							
								
								
									
										60
									
								
								Caddy/tempo.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								Caddy/tempo.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
stream_over_http_enabled: true
 | 
			
		||||
server:
 | 
			
		||||
  http_listen_port: 3200
 | 
			
		||||
  log_level: info
 | 
			
		||||
 | 
			
		||||
query_frontend:
 | 
			
		||||
  search:
 | 
			
		||||
    duration_slo: 5s
 | 
			
		||||
    throughput_bytes_slo: 1.073741824e+09
 | 
			
		||||
  trace_by_id:
 | 
			
		||||
    duration_slo: 5s
 | 
			
		||||
 | 
			
		||||
distributor:
 | 
			
		||||
  receivers:                           # this configuration will listen on all ports and protocols that tempo is capable of.
 | 
			
		||||
    jaeger:                            # the receives all come from the OpenTelemetry collector.  more configuration information can
 | 
			
		||||
      protocols:                       # be found there: https://github.com/open-telemetry/opentelemetry-collector/tree/main/receiver
 | 
			
		||||
        thrift_http:                   #
 | 
			
		||||
        grpc:                          # for a production deployment you should only enable the receivers you need!
 | 
			
		||||
        thrift_binary:
 | 
			
		||||
        thrift_compact:
 | 
			
		||||
    zipkin:
 | 
			
		||||
    otlp:
 | 
			
		||||
      protocols:
 | 
			
		||||
        http:
 | 
			
		||||
        grpc:
 | 
			
		||||
    opencensus:
 | 
			
		||||
 | 
			
		||||
ingester:
 | 
			
		||||
  max_block_duration: 5m               # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally
 | 
			
		||||
 | 
			
		||||
compactor:
 | 
			
		||||
  compaction:
 | 
			
		||||
    block_retention: 1h                # overall Tempo trace retention. set for demo purposes
 | 
			
		||||
 | 
			
		||||
metrics_generator:
 | 
			
		||||
  registry:
 | 
			
		||||
    external_labels:
 | 
			
		||||
      source: tempo
 | 
			
		||||
      cluster: docker-compose
 | 
			
		||||
  storage:
 | 
			
		||||
    path: /var/tempo/generator/wal
 | 
			
		||||
    remote_write:
 | 
			
		||||
      - url: http://prometheus:9090/api/v1/write
 | 
			
		||||
        send_exemplars: true
 | 
			
		||||
  traces_storage:
 | 
			
		||||
    path: /var/tempo/generator/traces
 | 
			
		||||
 | 
			
		||||
storage:
 | 
			
		||||
  trace:
 | 
			
		||||
    backend: local                     # backend configuration to use
 | 
			
		||||
    wal:
 | 
			
		||||
      path: /var/tempo/wal             # where to store the wal locally
 | 
			
		||||
    local:
 | 
			
		||||
      path: /var/tempo/blocks
 | 
			
		||||
 | 
			
		||||
overrides:
 | 
			
		||||
  defaults:
 | 
			
		||||
    metrics_generator:
 | 
			
		||||
      processors: [service-graphs, span-metrics, local-blocks] # enables metrics generator
 | 
			
		||||
      generate_native_histograms: both
 | 
			
		||||
							
								
								
									
										4
									
								
								FileBrowser/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								FileBrowser/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
 | 
			
		||||
# Filebrowser
 | 
			
		||||
 | 
			
		||||
Browser-based file browser. Default creds will be `admin` `admin`. Obviously change this asap
 | 
			
		||||
@@ -1,5 +1,3 @@
 | 
			
		||||
---
 | 
			
		||||
version: '3'
 | 
			
		||||
services:
 | 
			
		||||
  file-browser:
 | 
			
		||||
    image: filebrowser/filebrowser
 | 
			
		||||
@@ -9,10 +7,8 @@ services:
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8080:80
 | 
			
		||||
    volumes:
 | 
			
		||||
      # Probably put this somewhere else. (Such as on RAID)
 | 
			
		||||
      - ./documents/:/srv
 | 
			
		||||
      - ${ZFS_POOL}/:/srv/
 | 
			
		||||
      - ./database.db:/database.db
 | 
			
		||||
    security_opt:
 | 
			
		||||
      - no-new-privileges:true 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								Jellyfin/compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Jellyfin/compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
services:
 | 
			
		||||
 jellyfin:
 | 
			
		||||
   # GID might need to be manuall set (id -g)
 | 
			
		||||
  user: ${UID}:${GID}
 | 
			
		||||
  restart: unless-stopped
 | 
			
		||||
  image: jellyfin/jellyfin:latest
 | 
			
		||||
  container_name: jellyfin
 | 
			
		||||
  volumes:
 | 
			
		||||
    - ./config:/config
 | 
			
		||||
    - ./cache:/cache
 | 
			
		||||
    - ${ZFS_POOL}/media:/media
 | 
			
		||||
  ports:
 | 
			
		||||
    - 8096:9096
 | 
			
		||||
  # Requires packages:
 | 
			
		||||
  # nvidia-contianer-toolkit
 | 
			
		||||
  # runtime: nvidia
 | 
			
		||||
  # deploy:
 | 
			
		||||
  #   resources:
 | 
			
		||||
  #     reservations:
 | 
			
		||||
  #       devices:
 | 
			
		||||
  #         - capabilities: [gpu]
 | 
			
		||||
  
 | 
			
		||||
@@ -1,24 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
version: '3'
 | 
			
		||||
services:
 | 
			
		||||
 jellyfin:
 | 
			
		||||
  user: 1000:1000
 | 
			
		||||
  restart: unless-stopped
 | 
			
		||||
  image: jellyfin/jellyfin:latest
 | 
			
		||||
  container_name: jellyfin
 | 
			
		||||
  volumes:
 | 
			
		||||
    - ./config:/config
 | 
			
		||||
    - ./cache:/cache
 | 
			
		||||
    # If FileBrowser can see this you can manage your media easier
 | 
			
		||||
    - ./media:/media
 | 
			
		||||
  network_mode: 'host'
 | 
			
		||||
  # Requires packages:
 | 
			
		||||
  # nvidia-contianer-toolkit
 | 
			
		||||
  # docker > 19.03
 | 
			
		||||
  runtime: nvidia
 | 
			
		||||
  deploy:
 | 
			
		||||
    resources:
 | 
			
		||||
      reservations:
 | 
			
		||||
        devices:
 | 
			
		||||
          - capabilities: [gpu]
 | 
			
		||||
  
 | 
			
		||||
							
								
								
									
										4
									
								
								OpenWebUI/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								OpenWebUI/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
 | 
			
		||||
# Open Web UI
 | 
			
		||||
 | 
			
		||||
Currently this config expects ollama to be running on a different device, the compose.yml has the ip for you to change in it.
 | 
			
		||||
							
								
								
									
										13
									
								
								OpenWebUI/compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								OpenWebUI/compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
services:
 | 
			
		||||
  open-webui:
 | 
			
		||||
    image: ghcr.io/open-webui/open-webui:main
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    environment:
 | 
			
		||||
      - WEBUI_AUTH=False
 | 
			
		||||
      - OLLAMA_BASE_URL=http://10.0.0.21:11434
 | 
			
		||||
    ports:
 | 
			
		||||
      - 4000:8080
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './open-webui:/app/backend/data'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										18
									
								
								Rabbitmq/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								Rabbitmq/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
# 3.13 management
 | 
			
		||||
FROM rabbitmq:3.13-rc
 | 
			
		||||
 | 
			
		||||
RUN set eux; \
 | 
			
		||||
	rabbitmq-plugins enable --offline rabbitmq_management; \
 | 
			
		||||
# make sure the metrics collector is re-enabled (disabled in the base image for Prometheus-style metrics by default)
 | 
			
		||||
	rm -f /etc/rabbitmq/conf.d/20-management_agent.disable_metrics_collector.conf; \
 | 
			
		||||
# grab "rabbitmqadmin" from inside the "rabbitmq_management-X.Y.Z" plugin folder
 | 
			
		||||
# see https://github.com/docker-library/rabbitmq/issues/207
 | 
			
		||||
	cp /plugins/rabbitmq_management-*/priv/www/cli/rabbitmqadmin /usr/local/bin/rabbitmqadmin; \
 | 
			
		||||
	[ -s /usr/local/bin/rabbitmqadmin ]; \
 | 
			
		||||
	chmod +x /usr/local/bin/rabbitmqadmin; \
 | 
			
		||||
	apt-get update; \
 | 
			
		||||
	apt-get install -y --no-install-recommends python3; \
 | 
			
		||||
	rm -rf /var/lib/apt/lists/*; \
 | 
			
		||||
	rabbitmqadmin --version
 | 
			
		||||
 | 
			
		||||
EXPOSE 15671 15672
 | 
			
		||||
@@ -1,14 +1,19 @@
 | 
			
		||||
---
 | 
			
		||||
version: '3'
 | 
			
		||||
services:
 | 
			
		||||
  file-browser:
 | 
			
		||||
    image: 
 | 
			
		||||
  rabbitmq:
 | 
			
		||||
    build: ./
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    container_name: rabbitmq
 | 
			
		||||
    # Configuration
 | 
			
		||||
    # https://www.rabbitmq.com/configure.html 
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf
 | 
			
		||||
    security_opt:
 | 
			
		||||
      - no-new-privileges:true 
 | 
			
		||||
    environment:
 | 
			
		||||
      - RABBITMQ_DEFAULT_USER=username
 | 
			
		||||
      - RABBITMQ_DEFAULT_PASS=password
 | 
			
		||||
    ports:
 | 
			
		||||
      # Web-management
 | 
			
		||||
      - 8080:15672
 | 
			
		||||
      - 5672:5672
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								Rabbitmq/rabbitmq.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								Rabbitmq/rabbitmq.conf
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										108
									
								
								Revolt/.env
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								Revolt/.env
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
##
 | 
			
		||||
## Quark configuration
 | 
			
		||||
##
 | 
			
		||||
 | 
			
		||||
# MongoDB
 | 
			
		||||
MONGODB=mongodb://database
 | 
			
		||||
 | 
			
		||||
# Redis
 | 
			
		||||
REDIS_URI=redis://redis/
 | 
			
		||||
 | 
			
		||||
# Hostname used for Caddy
 | 
			
		||||
# This should in most cases match REVOLT_APP_URL
 | 
			
		||||
HOSTNAME=http://local.revolt.chat
 | 
			
		||||
 | 
			
		||||
# URL to where the Revolt app is publicly accessible
 | 
			
		||||
REVOLT_APP_URL=http://local.revolt.chat
 | 
			
		||||
 | 
			
		||||
# VITE_xxx variables are used in the new frontend https://github.com/revoltchat/frontend
 | 
			
		||||
 | 
			
		||||
# URL to where the API is publicly accessible
 | 
			
		||||
REVOLT_PUBLIC_URL=http://local.revolt.chat/api
 | 
			
		||||
VITE_API_URL=http://local.revolt.chat/api
 | 
			
		||||
 | 
			
		||||
# URL to where the WebSocket server is publicly accessible
 | 
			
		||||
REVOLT_EXTERNAL_WS_URL=ws://local.revolt.chat/ws
 | 
			
		||||
VITE_WS_URL=ws://local.revolt.chat/ws
 | 
			
		||||
 | 
			
		||||
# URL to where Autumn is publicly available
 | 
			
		||||
AUTUMN_PUBLIC_URL=http://local.revolt.chat/autumn
 | 
			
		||||
VITE_MEDIA_URL=http://local.revolt.chat/autumn
 | 
			
		||||
 | 
			
		||||
# URL to where January is publicly available
 | 
			
		||||
JANUARY_PUBLIC_URL=http://local.revolt.chat/january
 | 
			
		||||
VITE_PROXY_URL=http://local.revolt.chat/january
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
## hCaptcha Settings
 | 
			
		||||
##
 | 
			
		||||
 | 
			
		||||
# If you are sure that you don't want to use hCaptcha, set to 1.
 | 
			
		||||
REVOLT_UNSAFE_NO_CAPTCHA=1
 | 
			
		||||
 | 
			
		||||
# hCaptcha API key (This is the "Secret key" from your User Settings page)
 | 
			
		||||
# REVOLT_HCAPTCHA_KEY=0x0000000000000000000000000000000000000000
 | 
			
		||||
 | 
			
		||||
# hCaptcha site key
 | 
			
		||||
# REVOLT_HCAPTCHA_SITEKEY=10000000-ffff-ffff-ffff-000000000001
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
## Email Settings
 | 
			
		||||
##
 | 
			
		||||
 | 
			
		||||
# If you are sure that you don't want to use email verification, set to 1.
 | 
			
		||||
REVOLT_UNSAFE_NO_EMAIL=1
 | 
			
		||||
 | 
			
		||||
# SMTP host
 | 
			
		||||
# REVOLT_SMTP_HOST=smtp.example.com
 | 
			
		||||
 | 
			
		||||
# SMTP username
 | 
			
		||||
# REVOLT_SMTP_USERNAME=noreply@example.com
 | 
			
		||||
 | 
			
		||||
# SMTP password
 | 
			
		||||
# REVOLT_SMTP_PASSWORD=CHANGEME
 | 
			
		||||
 | 
			
		||||
# SMTP From header
 | 
			
		||||
# REVOLT_SMTP_FROM=Revolt <noreply@example.com>
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
## Application Settings
 | 
			
		||||
##
 | 
			
		||||
 | 
			
		||||
# Whether to only allow users to sign up if they have an invite code
 | 
			
		||||
REVOLT_INVITE_ONLY=0
 | 
			
		||||
 | 
			
		||||
# Maximum number of people that can be in a group chat
 | 
			
		||||
REVOLT_MAX_GROUP_SIZE=150
 | 
			
		||||
 | 
			
		||||
# VAPID keys for push notifications
 | 
			
		||||
# Generate using this guide: https://gitlab.insrt.uk/revolt/delta/-/wikis/vapid
 | 
			
		||||
# --> Please replace these keys before going into production! <--
 | 
			
		||||
REVOLT_VAPID_PRIVATE_KEY=LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJSUWpyTWxLRnBiVWhsUHpUbERvcEliYk1yeVNrNXpKYzVYVzIxSjJDS3hvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFWnkrQkg2TGJQZ2hEa3pEempXOG0rUXVPM3pCajRXT1phdkR6ZU00c0pqbmFwd1psTFE0WAp1ZDh2TzVodU94QWhMQlU3WWRldVovWHlBdFpWZmNyQi9BPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo=
 | 
			
		||||
REVOLT_VAPID_PUBLIC_KEY=BGcvgR-i2z4IQ5Mw841vJvkLjt8wY-FjmWrw83jOLCY52qcGZS0OF7nfLzuYbjsQISwVO2HXrmf18gLWVX3Kwfw=
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
##
 | 
			
		||||
## Autumn configuration
 | 
			
		||||
##
 | 
			
		||||
 | 
			
		||||
# S3 Region
 | 
			
		||||
AUTUMN_S3_REGION=minio
 | 
			
		||||
 | 
			
		||||
# S3 Endpoint
 | 
			
		||||
AUTUMN_S3_ENDPOINT=http://minio:9000
 | 
			
		||||
 | 
			
		||||
# MinIO Root User
 | 
			
		||||
MINIO_ROOT_USER=minioautumn
 | 
			
		||||
 | 
			
		||||
# MinIO Root Password
 | 
			
		||||
MINIO_ROOT_PASSWORD=minioautumn
 | 
			
		||||
 | 
			
		||||
# AWS Access Key ID
 | 
			
		||||
AWS_ACCESS_KEY_ID=minioautumn
 | 
			
		||||
 | 
			
		||||
# AWS Secret Key
 | 
			
		||||
AWS_SECRET_ACCESS_KEY=minioautumn
 | 
			
		||||
							
								
								
									
										1
									
								
								Revolt/.env.caddy
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Revolt/.env.caddy
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
HOSTNAME=http://local.revolt.chat
 | 
			
		||||
							
								
								
									
										42
									
								
								Revolt/Caddyfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								Revolt/Caddyfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
{
 | 
			
		||||
	admin :2019
 | 
			
		||||
 | 
			
		||||
	servers {
 | 
			
		||||
		metrics
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// {$HOSTNAME} {
 | 
			
		||||
:80 {
 | 
			
		||||
	route /api* {
 | 
			
		||||
		uri strip_prefix /api
 | 
			
		||||
		reverse_proxy http://api:8000
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	route /ws {
 | 
			
		||||
		@upgrade {
 | 
			
		||||
			header Connection *Upgrade*
 | 
			
		||||
			header Upgrade websocket
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		uri strip_prefix /ws
 | 
			
		||||
		reverse_proxy @upgrade http://events:9000
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	route /autumn* {
 | 
			
		||||
		uri strip_prefix /autumn
 | 
			
		||||
		reverse_proxy http://autumn:3000
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	route /january* {
 | 
			
		||||
		uri strip_prefix /january
 | 
			
		||||
		reverse_proxy http://january:7000
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	route /stats* {
 | 
			
		||||
		uri strip_prefix /stats
 | 
			
		||||
		reverse_proxy http://grafana:3000
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	reverse_proxy http://web:5000
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								Revolt/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								Revolt/README.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
Run a revolt server with fancy monitoring (WIP)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Prep
 | 
			
		||||
 | 
			
		||||
You may need to run
 | 
			
		||||
```bash
 | 
			
		||||
sudo mount --make-rshared /
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
# Before Prod
 | 
			
		||||
- [ ] Change .env.grafana file usernames and passwords
 | 
			
		||||
- [ ] Change .env file urls
 | 
			
		||||
							
								
								
									
										97
									
								
								Revolt/Revolt.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								Revolt/Revolt.toml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,97 @@
 | 
			
		||||
[database]
 | 
			
		||||
mongodb = "mongodb://database"
 | 
			
		||||
redis = "redis://redis/"
 | 
			
		||||
 | 
			
		||||
[hosts]
 | 
			
		||||
app = "http://local.revolt.chat"
 | 
			
		||||
api = "http://local.revolt.chat/api"
 | 
			
		||||
events = "ws://local.revolt.chat/ws"
 | 
			
		||||
autumn = "http://local.revolt.chat/autumn"
 | 
			
		||||
january = "http://local.revolt.chat/january"
 | 
			
		||||
voso_legacy = ""
 | 
			
		||||
voso_legacy_ws = ""
 | 
			
		||||
 | 
			
		||||
[api]
 | 
			
		||||
 | 
			
		||||
[api.registration]
 | 
			
		||||
invite_only = false
 | 
			
		||||
 | 
			
		||||
[api.smtp]
 | 
			
		||||
host = ""
 | 
			
		||||
username = ""
 | 
			
		||||
password = ""
 | 
			
		||||
from_address = ""
 | 
			
		||||
 | 
			
		||||
[api.vapid]
 | 
			
		||||
private_key = "LS0tLS1CRUdJTiBFQyBQUklWQVRFIEtFWS0tLS0tCk1IY0NBUUVFSUJSUWpyTWxLRnBiVWhsUHpUbERvcEliYk1yeVNrNXpKYzVYVzIxSjJDS3hvQW9HQ0NxR1NNNDkKQXdFSG9VUURRZ0FFWnkrQkg2TGJQZ2hEa3pEempXOG0rUXVPM3pCajRXT1phdkR6ZU00c0pqbmFwd1psTFE0WAp1ZDh2TzVodU94QWhMQlU3WWRldVovWHlBdFpWZmNyQi9BPT0KLS0tLS1FTkQgRUMgUFJJVkFURSBLRVktLS0tLQo"
 | 
			
		||||
public_key = "BGcvgR-i2z4IQ5Mw841vJvkLjt8wY-FjmWrw83jOLCY52qcGZS0OF7nfLzuYbjsQISwVO2HXrmf18gLWVX3Kwfw="
 | 
			
		||||
 | 
			
		||||
[api.fcm]
 | 
			
		||||
api_key = ""
 | 
			
		||||
 | 
			
		||||
[api.apn]
 | 
			
		||||
pkcs8 = ""
 | 
			
		||||
key_id = ""
 | 
			
		||||
team_id = ""
 | 
			
		||||
 | 
			
		||||
[api.security]
 | 
			
		||||
authifier_shield_key = ""
 | 
			
		||||
voso_legacy_token = ""
 | 
			
		||||
trust_cloudflare = false
 | 
			
		||||
 | 
			
		||||
[api.security.captcha]
 | 
			
		||||
hcaptcha_key = ""
 | 
			
		||||
hcaptcha_sitekey = ""
 | 
			
		||||
 | 
			
		||||
[api.workers]
 | 
			
		||||
max_concurrent_connections = 50
 | 
			
		||||
 | 
			
		||||
[features]
 | 
			
		||||
webhooks_enabled = false
 | 
			
		||||
 | 
			
		||||
[features.limits]
 | 
			
		||||
 | 
			
		||||
[features.limits.global]
 | 
			
		||||
group_size = 100
 | 
			
		||||
message_embeds = 5
 | 
			
		||||
message_replies = 5
 | 
			
		||||
message_reactions = 20
 | 
			
		||||
server_emoji = 100
 | 
			
		||||
server_roles = 200
 | 
			
		||||
server_channels = 200
 | 
			
		||||
 | 
			
		||||
new_user_days = 3
 | 
			
		||||
 | 
			
		||||
[features.limits.new_user]
 | 
			
		||||
outgoing_friend_requests = 5
 | 
			
		||||
 | 
			
		||||
bots = 2
 | 
			
		||||
message_length = 2000
 | 
			
		||||
message_attachments = 5
 | 
			
		||||
servers = 100
 | 
			
		||||
 | 
			
		||||
attachment_size = 20000000
 | 
			
		||||
avatar_size = 4000000
 | 
			
		||||
background_size = 6000000
 | 
			
		||||
icon_size = 2500000
 | 
			
		||||
banner_size = 6000000
 | 
			
		||||
emoji_size = 500000
 | 
			
		||||
 | 
			
		||||
[features.limits.default]
 | 
			
		||||
outgoing_friend_requests = 10
 | 
			
		||||
 | 
			
		||||
bots = 5
 | 
			
		||||
message_length = 2000
 | 
			
		||||
message_attachments = 5
 | 
			
		||||
servers = 100
 | 
			
		||||
 | 
			
		||||
attachment_size = 20000000
 | 
			
		||||
avatar_size = 4000000
 | 
			
		||||
background_size = 6000000
 | 
			
		||||
icon_size = 2500000
 | 
			
		||||
banner_size = 6000000
 | 
			
		||||
emoji_size = 500000
 | 
			
		||||
 | 
			
		||||
[sentry]
 | 
			
		||||
api = ""
 | 
			
		||||
events = ""
 | 
			
		||||
							
								
								
									
										183
									
								
								Revolt/compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										183
									
								
								Revolt/compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,183 @@
 | 
			
		||||
services:
 | 
			
		||||
  # r-proxy, log generator
 | 
			
		||||
  caddy:
 | 
			
		||||
    image: caddy:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    env_file: .env.caddy
 | 
			
		||||
    ports:
 | 
			
		||||
      - '8880:80'
 | 
			
		||||
      - '4443:443'
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './Caddyfile:/etc/caddy/Caddyfile'
 | 
			
		||||
      - './data/caddy-data:/data'
 | 
			
		||||
      - './data/caddy-config:/config'
 | 
			
		||||
 | 
			
		||||
  ##########################################
 | 
			
		||||
  #    Monitoring
 | 
			
		||||
  #####
 | 
			
		||||
 | 
			
		||||
  # log collector
 | 
			
		||||
  prometheus:
 | 
			
		||||
    image: prom/prometheus:latest
 | 
			
		||||
    restart: always
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./prometheus/:/etc/prometheus/
 | 
			
		||||
      - prometheus_storage:/prometheus
 | 
			
		||||
    command:
 | 
			
		||||
      - '--config.file=/etc/prometheus/prometheus.yml'
 | 
			
		||||
      - '--storage.tsdb.path=/prometheus'
 | 
			
		||||
      - '--web.console.libraries=/usr/share/prometheus/console_libraries'
 | 
			
		||||
      - '--web.console.templates=/usr/share/prometheus/consoles'
 | 
			
		||||
    ports:
 | 
			
		||||
      - 9090:9090
 | 
			
		||||
    # links:
 | 
			
		||||
      # - cadvisor:cadvisor
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - cadvisor
 | 
			
		||||
      - caddy
 | 
			
		||||
 | 
			
		||||
  # log viewer
 | 
			
		||||
  grafana:
 | 
			
		||||
    image: grafana/grafana:latest
 | 
			
		||||
    user: "472"
 | 
			
		||||
    restart: always
 | 
			
		||||
    ports:
 | 
			
		||||
      - 3000:3000
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './grafana/provisioning/:/etc/grafana/provisioning/'
 | 
			
		||||
      - 'grafana_storage:/var/lib/grafana'
 | 
			
		||||
    env_file:
 | 
			
		||||
      - ./grafana/.env.grafana
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - prometheus
 | 
			
		||||
 | 
			
		||||
  node-exporter:
 | 
			
		||||
    image: quay.io/prometheus/node-exporter:latest
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /proc:/host/proc:ro
 | 
			
		||||
      - /sys:/host/sys:ro
 | 
			
		||||
      - /:/rootfs:ro
 | 
			
		||||
      - /:/host:ro,rslave
 | 
			
		||||
    command: 
 | 
			
		||||
      - '--path.rootfs=/host'
 | 
			
		||||
      - '--path.procfs=/host/proc' 
 | 
			
		||||
      - '--path.sysfs=/host/sys'
 | 
			
		||||
      - --collector.filesystem.mount-points-exclude
 | 
			
		||||
      - "^/(sys|proc|dev|host|etc|rootfs/var/lib/docker/containers|rootfs/var/lib/docker/overlay2|rootfs/run/docker/netns|rootfs/var/lib/docker/aufs)($$|/)"
 | 
			
		||||
    ports:
 | 
			
		||||
      - 9100:9100
 | 
			
		||||
    restart: always
 | 
			
		||||
    deploy:
 | 
			
		||||
      mode: global
 | 
			
		||||
 | 
			
		||||
  cadvisor:
 | 
			
		||||
    image: gcr.io/cadvisor/cadvisor
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /:/rootfs:ro
 | 
			
		||||
      - /var/run:/var/run:rw
 | 
			
		||||
      - /sys:/sys:ro
 | 
			
		||||
      - /var/lib/docker/:/var/lib/docker:ro
 | 
			
		||||
    ports:
 | 
			
		||||
      - 8080:8080
 | 
			
		||||
    restart: always
 | 
			
		||||
    deploy:
 | 
			
		||||
      mode: global
 | 
			
		||||
 | 
			
		||||
  ##########################################
 | 
			
		||||
  #    Revolt
 | 
			
		||||
  #####
 | 
			
		||||
 | 
			
		||||
  # MongoDB database
 | 
			
		||||
  database:
 | 
			
		||||
    image: mongo
 | 
			
		||||
    restart: always
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './data/db:/data/db'
 | 
			
		||||
 | 
			
		||||
  # Redis server
 | 
			
		||||
  redis:
 | 
			
		||||
    image: eqalpha/keydb
 | 
			
		||||
    restart: always
 | 
			
		||||
 | 
			
		||||
  # S3-compatible storage server
 | 
			
		||||
  minio:
 | 
			
		||||
    image: minio/minio
 | 
			
		||||
    command: server /data
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './data/minio:/data'
 | 
			
		||||
    restart: always
 | 
			
		||||
 | 
			
		||||
  # API server (delta)
 | 
			
		||||
  api:
 | 
			
		||||
    image: ghcr.io/revoltchat/server:latest
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - database
 | 
			
		||||
      - redis
 | 
			
		||||
      - caddy
 | 
			
		||||
    restart: always
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './Revolt.toml:/Revolt.toml'
 | 
			
		||||
 | 
			
		||||
  # Events service (quark)
 | 
			
		||||
  events:
 | 
			
		||||
    image: ghcr.io/revoltchat/bonfire:latest
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - database
 | 
			
		||||
      - redis
 | 
			
		||||
      - caddy
 | 
			
		||||
    restart: always
 | 
			
		||||
    volumes:
 | 
			
		||||
      - './Revolt.toml:/Revolt.toml'
 | 
			
		||||
 | 
			
		||||
  # Web App (revite)
 | 
			
		||||
  web:
 | 
			
		||||
    image: ghcr.io/revoltchat/client:master
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - caddy
 | 
			
		||||
    restart: always
 | 
			
		||||
 | 
			
		||||
  # File server (autumn)
 | 
			
		||||
  autumn:
 | 
			
		||||
    image: ghcr.io/revoltchat/autumn:latest
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - database
 | 
			
		||||
      - createbuckets
 | 
			
		||||
      - caddy
 | 
			
		||||
    environment:
 | 
			
		||||
      - AUTUMN_MONGO_URI=mongodb://database
 | 
			
		||||
    restart: always
 | 
			
		||||
 | 
			
		||||
  # Metadata and image proxy (january)
 | 
			
		||||
  january:
 | 
			
		||||
    image: ghcr.io/revoltchat/january:latest
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - caddy
 | 
			
		||||
    restart: always
 | 
			
		||||
 | 
			
		||||
  # Create buckets for minio.
 | 
			
		||||
  createbuckets:
 | 
			
		||||
    image: minio/mc
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - minio
 | 
			
		||||
    env_file: .env
 | 
			
		||||
    entrypoint: >
 | 
			
		||||
      /bin/sh -c "
 | 
			
		||||
      /usr/bin/mc config host add minio http://minio:9000 $MINIO_ROOT_USER $MINIO_ROOT_PASSWORD;
 | 
			
		||||
      while ! /usr/bin/mc ready minio; do echo 'Waiting minio...' && sleep 1; done;
 | 
			
		||||
      /usr/bin/mc mb minio/attachments;
 | 
			
		||||
      /usr/bin/mc mb minio/avatars;
 | 
			
		||||
      /usr/bin/mc mb minio/backgrounds;
 | 
			
		||||
      /usr/bin/mc mb minio/icons;
 | 
			
		||||
      /usr/bin/mc mb minio/banners;
 | 
			
		||||
      /usr/bin/mc mb minio/emojis;
 | 
			
		||||
      exit 0;
 | 
			
		||||
      "
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  grafana_storage: {}
 | 
			
		||||
  prometheus_storage: {}
 | 
			
		||||
							
								
								
									
										4
									
								
								Revolt/grafana/.env.grafana
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								Revolt/grafana/.env.grafana
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
			
		||||
GF_AUTH_ANONYMOUS_ENABLED=true
 | 
			
		||||
GF_AUTH_ANONYMOUS_ORG_ROLE=Admin
 | 
			
		||||
GF_AUTH_DISABLE_LOGIN_FORM=true
 | 
			
		||||
GF_FEATURE_TOGGLES_ENABLE=traceqlEditor
 | 
			
		||||
							
								
								
									
										15
									
								
								Revolt/grafana/provisioning/datasources/datasources.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								Revolt/grafana/provisioning/datasources/datasources.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
apiVersion: 1
 | 
			
		||||
 | 
			
		||||
datasources:
 | 
			
		||||
- name: Prometheus
 | 
			
		||||
  type: prometheus
 | 
			
		||||
  uid: prometheus
 | 
			
		||||
  access: proxy
 | 
			
		||||
  orgId: 1
 | 
			
		||||
  url: http://prometheus:9090
 | 
			
		||||
  basicAuth: false
 | 
			
		||||
  isDefault: false
 | 
			
		||||
  version: 1
 | 
			
		||||
  editable: false
 | 
			
		||||
  jsonData:
 | 
			
		||||
    httpMethod: GET
 | 
			
		||||
							
								
								
									
										24
									
								
								Revolt/prometheus/prometheus.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Revolt/prometheus/prometheus.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
global:
 | 
			
		||||
  scrape_interval: 15s
 | 
			
		||||
  external_labels:
 | 
			
		||||
      monitor: 'Revolt'
 | 
			
		||||
 | 
			
		||||
scrape_configs:
 | 
			
		||||
  - job_name: caddy
 | 
			
		||||
    static_configs:
 | 
			
		||||
      # docker networking
 | 
			
		||||
      - targets: ['caddy:2019']
 | 
			
		||||
 | 
			
		||||
  - job_name: 'prometheus'
 | 
			
		||||
    static_configs:
 | 
			
		||||
      - targets: ['localhost:9090']
 | 
			
		||||
 | 
			
		||||
  - job_name: 'cadvisor'
 | 
			
		||||
    static_configs:
 | 
			
		||||
      - targets: ['cadvisor:8080']
 | 
			
		||||
 | 
			
		||||
  - job_name: 'node-exporter'
 | 
			
		||||
    static_configs:
 | 
			
		||||
      - targets: ['node-exporter:9100']
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										9
									
								
								Vaultwarden/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								Vaultwarden/docker-compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  vaultwarden:
 | 
			
		||||
    image: vaultwarden/server:latest
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    ports:
 | 
			
		||||
      - 1025:80
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./vw-data/:/data/
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										32
									
								
								qBittorrent/compose.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								qBittorrent/compose.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
services:
 | 
			
		||||
  qbittorrent:
 | 
			
		||||
    image: qbittorrentofficial/qbittorrent-nox:latest
 | 
			
		||||
    container_name: qbittorrent-nox
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    environment:
 | 
			
		||||
      - QBT_WEBUI_PORT=6882
 | 
			
		||||
      - QBT_VERSION=latest
 | 
			
		||||
      - QBT_EULA=true
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./qbit-config:/config
 | 
			
		||||
      - ${ZFS_POOL}/downloads:/downloads
 | 
			
		||||
    depends_on:
 | 
			
		||||
      - vpn
 | 
			
		||||
    ports:
 | 
			
		||||
      - 6882:6882
 | 
			
		||||
  vpn:
 | 
			
		||||
    image: lscr.io/linuxserver/wireguard:latest
 | 
			
		||||
    container_name: wireguard
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    cap_add:
 | 
			
		||||
      - NET_ADMIN
 | 
			
		||||
    environment:
 | 
			
		||||
      - PUID=${UID}
 | 
			
		||||
      - PGID=${GID}
 | 
			
		||||
      - TZ=America/Denver
 | 
			
		||||
      - SERVERPORT=51820 #optional
 | 
			
		||||
      - LOG_CONFS=true #optional
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./config:/config
 | 
			
		||||
    sysctls:
 | 
			
		||||
      - net.ipv4.conf.all.src_valid_mark=1
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
---
 | 
			
		||||
version: '3'
 | 
			
		||||
services:
 | 
			
		||||
 qbittorrent-nox:
 | 
			
		||||
    image: qbittorrentofficial/qbittorrent-nox:latest
 | 
			
		||||
    container_name: qbittorrent-nox
 | 
			
		||||
    environment:
 | 
			
		||||
      - QBT_EULA=true
 | 
			
		||||
      - QBT_VERSION=latest
 | 
			
		||||
      - QBT_WEBUI_PORT=6882
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./config:/config
 | 
			
		||||
      # I like setting this to somewhere FileBrowser can see
 | 
			
		||||
      - ./downloads:/downloads
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    # With network_mode set to host you can access VPN
 | 
			
		||||
    # interfaces setup on your local (as in the machine running docker) machine.
 | 
			
		||||
    # You could also pair this with a Wireguard container and do internal
 | 
			
		||||
    # networking for potentially more security.
 | 
			
		||||
    network_mode: host
 | 
			
		||||
  
 | 
			
		||||
							
								
								
									
										9
									
								
								uptime-kuma/compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								uptime-kuma/compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
services:
 | 
			
		||||
  uptime-kuma:
 | 
			
		||||
    image: louislam/uptime-kuma:1
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./data:/app/data
 | 
			
		||||
    ports:
 | 
			
		||||
      # <Host Port>:<Container Port>
 | 
			
		||||
      - 3001:3001
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
		Reference in New Issue
	
	Block a user