# File Browser
-weight: 500;">docker run \ -v /path/to/srv:/srv \ -v /path/to/database:/database \ -v /path/to/config:/config \ -e PUID=$(id -u) \ -e PGID=$(id -g) \ -p 8080:80 \ filebrowser/filebrowser:s6
# File Browser
-weight: 500;">docker run \ -v /path/to/srv:/srv \ -v /path/to/database:/database \ -v /path/to/config:/config \ -e PUID=$(id -u) \ -e PGID=$(id -g) \ -p 8080:80 \ filebrowser/filebrowser:s6
# File Browser
-weight: 500;">docker run \ -v /path/to/srv:/srv \ -v /path/to/database:/database \ -v /path/to/config:/config \ -e PUID=$(id -u) \ -e PGID=$(id -g) \ -p 8080:80 \ filebrowser/filebrowser:s6
# Transmission
-weight: 500;">docker run -d \ --name=transmission \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -e TRANSMISSION_WEB_HOME= `#optional` \ -e USER= `#optional` \ -e PASS= `#optional` \ -e WHITELIST= `#optional` \ -e PEERPORT= `#optional` \ -e HOST_WHITELIST= `#optional` \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v /path/to/transmission/data:/config \ -v /path/to/downloads:/downloads `#optional` \ -v /path/to/watch/folder:/watch `#optional` \ ---weight: 500;">restart unless-stopped \ lscr.io/linuxserver/transmission:latest
# Transmission
-weight: 500;">docker run -d \ --name=transmission \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -e TRANSMISSION_WEB_HOME= `#optional` \ -e USER= `#optional` \ -e PASS= `#optional` \ -e WHITELIST= `#optional` \ -e PEERPORT= `#optional` \ -e HOST_WHITELIST= `#optional` \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v /path/to/transmission/data:/config \ -v /path/to/downloads:/downloads `#optional` \ -v /path/to/watch/folder:/watch `#optional` \ ---weight: 500;">restart unless-stopped \ lscr.io/linuxserver/transmission:latest
# Transmission
-weight: 500;">docker run -d \ --name=transmission \ -e PUID=1000 \ -e PGID=1000 \ -e TZ=Etc/UTC \ -e TRANSMISSION_WEB_HOME= `#optional` \ -e USER= `#optional` \ -e PASS= `#optional` \ -e WHITELIST= `#optional` \ -e PEERPORT= `#optional` \ -e HOST_WHITELIST= `#optional` \ -p 9091:9091 \ -p 51413:51413 \ -p 51413:51413/udp \ -v /path/to/transmission/data:/config \ -v /path/to/downloads:/downloads `#optional` \ -v /path/to/watch/folder:/watch `#optional` \ ---weight: 500;">restart unless-stopped \ lscr.io/linuxserver/transmission:latest
# Turn UFW on with the default set of rules
-weight: 600;">sudo ufw -weight: 500;">enable # Check the -weight: 500;">status of UFW
-weight: 600;">sudo ufw -weight: 500;">status verbose # Deny all incoming traffic
-weight: 600;">sudo ufw default deny incoming # Allow incoming tcp traffic on port 8080
-weight: 600;">sudo ufw allow 8080/tcp # Allow incoming tcp traffic on port 9091
-weight: 600;">sudo ufw allow 9091/tcp
# Turn UFW on with the default set of rules
-weight: 600;">sudo ufw -weight: 500;">enable # Check the -weight: 500;">status of UFW
-weight: 600;">sudo ufw -weight: 500;">status verbose # Deny all incoming traffic
-weight: 600;">sudo ufw default deny incoming # Allow incoming tcp traffic on port 8080
-weight: 600;">sudo ufw allow 8080/tcp # Allow incoming tcp traffic on port 9091
-weight: 600;">sudo ufw allow 9091/tcp
# Turn UFW on with the default set of rules
-weight: 600;">sudo ufw -weight: 500;">enable # Check the -weight: 500;">status of UFW
-weight: 600;">sudo ufw -weight: 500;">status verbose # Deny all incoming traffic
-weight: 600;">sudo ufw default deny incoming # Allow incoming tcp traffic on port 8080
-weight: 600;">sudo ufw allow 8080/tcp # Allow incoming tcp traffic on port 9091
-weight: 600;">sudo ufw allow 9091/tcp
ACCEPT tcp -- anywhere anywhere tcp dpt:8080
ACCEPT tcp -- anywhere anywhere tcp dpt:8080
-p 8080:80 -> -p 127.0.0.1:8080:8080 -p 9091:9091 -> -p 127.0.0.1:9091:9091
-p 8080:80 -> -p 127.0.0.1:8080:8080 -p 9091:9091 -> -p 127.0.0.1:9091:9091
-p 8080:80 -> -p 127.0.0.1:8080:8080 -p 9091:9091 -> -p 127.0.0.1:9091:9091
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">upgrade
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">upgrade
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install nginx
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install nginx
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start nginx
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start nginx
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">enable nginx
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">enable nginx
-weight: 600;">sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nginx--weight: 500;">docker.key -out /etc/ssl/certs/nginx--weight: 500;">docker.crt
-weight: 600;">sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nginx--weight: 500;">docker.key -out /etc/ssl/certs/nginx--weight: 500;">docker.crt
-weight: 600;">sudo chmod 600 /etc/ssl/private/nginx--weight: 500;">docker.key
-weight: 600;">sudo chmod 600 /etc/ssl/private/nginx--weight: 500;">docker.key
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
-weight: 600;">sudo chmod 600 /etc/ssl/certs/dhparam.pem
-weight: 600;">sudo chmod 600 /etc/ssl/certs/dhparam.pem
-weight: 600;">sudo rm /etc/nginx/sites-enabled/default
-weight: 600;">sudo rm /etc/nginx/sites-enabled/default
-weight: 600;">sudo vi /etc/nginx/sites-enabled/-weight: 500;">docker.conf
-weight: 600;">sudo vi /etc/nginx/sites-enabled/-weight: 500;">docker.conf
server { listen 80; listen [::]:80; server_name _; return 301 https://$host$request_uri;
} server { listen 443 ssl http2; server_name transmission.*; ssl_certificate /etc/ssl/certs/nginx--weight: 500;">docker.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx--weight: 500;">docker.key; #Swap these out with Lets Encrypt Path if using signed cert ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 128M; location / { proxy_pass http://127.0.0.1:9091; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
} server { listen 443 ssl http2; server_name filebrowser.*; ssl_certificate /etc/ssl/certs/nginx--weight: 500;">docker.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx--weight: 500;">docker.key; #Swap these out with Lets Encrypt Path if using signed cert ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 128M; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
}
server { listen 80; listen [::]:80; server_name _; return 301 https://$host$request_uri;
} server { listen 443 ssl http2; server_name transmission.*; ssl_certificate /etc/ssl/certs/nginx--weight: 500;">docker.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx--weight: 500;">docker.key; #Swap these out with Lets Encrypt Path if using signed cert ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 128M; location / { proxy_pass http://127.0.0.1:9091; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
} server { listen 443 ssl http2; server_name filebrowser.*; ssl_certificate /etc/ssl/certs/nginx--weight: 500;">docker.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx--weight: 500;">docker.key; #Swap these out with Lets Encrypt Path if using signed cert ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 128M; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
}
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">restart nginx
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">restart nginx
```bash
-weight: 600;">sudo ufw allow 'Nginx Full'
```
```bash
-weight: 600;">sudo ufw allow 'Nginx Full'
```
```bash
-weight: 600;">sudo ufw allow 'Nginx Full'
``` - File Browser is a sleek, out-of-the-box file management interface that allows you to quickly set up a web-based file management system, complete with built-in access controls to secure your files.
- Transmission is a minimalist, lightweight BitTorrent client that I appreciate for its speed, open-source nature, simplicity, and efficient performance. - File Browser
- Transmission - Docker binds exposed ports to 0.0.0.0 by default, making services accessible from both local and external networks.
- Docker uses iptables (Linux's firewall management tool) to configure network routing. When you run containers and expose ports, Docker automatically adds iptables rules to manage traffic. These rules are added directly to the system's networking stack and can override UFW's settings in some cases. For example, Docker might automatically add rules like: ACCEPT tcp -- anywhere anywhere tcp dpt:8080
- UFW is essentially a frontend for iptables. If Docker's rules are inserted after UFW's (which is often the case), Docker's iptables rules will take precedence, allowing traffic that would otherwise be blocked by UFW. This can lead to situations where Docker containers are accessible even though UFW rules have been set to block traffic. - Update and -weight: 500;">upgrade the system: -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">upgrade
- Install Nginx: -weight: 600;">sudo -weight: 500;">apt -weight: 500;">install nginx
- Start Nginx: -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start nginx
- Enable Nginx to -weight: 500;">start on boot: -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">enable nginx
- Generate a self-signed SSL certificate: -weight: 600;">sudo openssl req -x509 -nodes -days 365 -newkey rsa:4096 -keyout /etc/ssl/private/nginx--weight: 500;">docker.key -out /etc/ssl/certs/nginx--weight: 500;">docker.crt
- Set proper permission for the certificate: -weight: 600;">sudo chmod 600 /etc/ssl/private/nginx--weight: 500;">docker.key
- Create a Diffie-Hellman group to improve security:\
Learn more about Diffie-Hellman key exchange. openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
- Set proper permissions for the Diffie-Hellman group: -weight: 600;">sudo chmod 600 /etc/ssl/certs/dhparam.pem
- Remove the default Nginx configuration: -weight: 600;">sudo rm /etc/nginx/sites-enabled/default
- Create a new Nginx configuration file: -weight: 600;">sudo vi /etc/nginx/sites-enabled/-weight: 500;">docker.conf Add the following configuration to the file: server { listen 80; listen [::]:80; server_name _; return 301 https://$host$request_uri;
} server { listen 443 ssl http2; server_name transmission.*; ssl_certificate /etc/ssl/certs/nginx--weight: 500;">docker.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx--weight: 500;">docker.key; #Swap these out with Lets Encrypt Path if using signed cert ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 128M; location / { proxy_pass http://127.0.0.1:9091; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
} server { listen 443 ssl http2; server_name filebrowser.*; ssl_certificate /etc/ssl/certs/nginx--weight: 500;">docker.crt; #Swap these out with Lets Encrypt Path if using signed cert ssl_certificate_key /etc/ssl/private/nginx--weight: 500;">docker.key; #Swap these out with Lets Encrypt Path if using signed cert ssl_dhparam /etc/ssl/certs/dhparam.pem; client_max_body_size 128M; location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; }
}
- Restart Nginx: -weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">restart nginx - https://transmission.mydomain.com
- https://filebrowser.mydomain.com