Complete Configuration Guide for Setting up Emby on FNOS System

Complete Configuration Guide for Setting up Emby on FNOS System System Environment Hardware: PVE Virtual Machine System: FNOS (Debian-based) Network: PVE VM, gateway is Mac Mini (192.168.71.100) FNOS IP: 192.168.71.9 FNOS Management Port: 5666 Objectives Install Emby Server via Docker Mount cloud storage (115 Cloud, Baidu Cloud, etc.) via CloudDrive2 Emby reads content from cloud storage Enable remote access via FRP MetaTube Plugin: Provide complete metadata scraping for adult content Part 1: Basic Environment Setup 1.1 SSH Login and Root Access # SSH login to FNOS ssh username@192.168.71.9 # Get root privileges sudo -i 1.2 Create Directory Structure # Create the following directory structure in file manager: /vol1/1000/ ├── Docker/ │ ├── emby/ │ │ ├── config/ │ │ └── metadata/ │ └── clouddrive2/ │ └── config/ ├── CloudNAS/ # For mounting cloud storage └── Media/ └── Videos/ # Local videos (optional) Part 2: Configure Docker Mount Sharing 2.1 Set Docker Mount to Shared Mode # Create Docker service configuration directory sudo mkdir -p /etc/systemd/system/docker.service.d/ # Create mount sharing configuration sudo cat <<EOF > /etc/systemd/system/docker.service.d/clear_mount_propagation_flags.conf [Service] MountFlags=shared EOF # Restart Docker service sudo systemctl restart docker.service Part 3: Install CloudDrive2 3.1 Install CloudDrive2 via Command Line # Remove any existing CloudDrive2 containers (if any) docker stop clouddrive2 2>/dev/null || true docker rm clouddrive2 2>/dev/null || true # Create CloudDrive2 container docker run -d \ --name clouddrive2 \ --restart=unless-stopped \ --env CLOUDDRIVE_HOME=/Config \ -v /vol1/1000/CloudNAS:/CloudNAS:shared \ -v /vol1/1000/Docker/clouddrive2/config:/Config \ --network host \ --pid host \ --privileged \ --device /dev/fuse:/dev/fuse \ cloudnas/clouddrive2 3.2 Configure Cloud Storage Mounting Access CloudDrive2 management interface: http://192.168.71.9:19798 Login to your CloudDrive2 account (requires lifetime membership) Add mount point: Name: 115 (or other cloud storage name) Mount Point: Select CloudNAS directory Auto-mount on startup: Check User ID: 0 Group ID: 0 Permissions: 0755 3.3 Verify Mount # Check mount status ls -la /vol1/1000/CloudNAS/ # Should see cloud storage folders, like: 115, baidu, etc. Part 4: Install Emby Server 4.1 Install Emby via Command Line # Remove any existing Emby containers (if any) docker stop emby 2>/dev/null || true docker rm emby 2>/dev/null || true # Create Emby container docker run -d \ --name emby \ -p 8096:8096 \ -p 8920:8920 \ -e TZ=Asia/Shanghai \ -e UID=0 \ -e GID=0 \ --privileged=true \ --device /dev/dri:/dev/dri \ -v /vol1/1000/Docker/emby/config:/config \ -v /vol1/1000/CloudNAS:/media:shared \ -v /vol1/1000/Docker/emby/metadata:/metadata \ --restart=unless-stopped \ --network host \ emby/embyserver:latest 4.2 Verify Emby Can Access Cloud Storage # Enter Emby container to check mount docker exec -it emby sh ls -la /media/ ls -la /media/115/ # Should see 115 cloud storage content exit 4.3 Configure Emby Access Emby management interface: http://192.168.71.9:8096 Complete initial setup Add media library: Type: Movies/TV Shows Path: /media/115/movie/ (based on actual cloud storage directory structure) Add other cloud storage paths as needed Part 5: Configure FRP Remote Access 5.1 Download and Install FRP # Download latest FRP version cd /opt wget https://github.com/fatedier/frp/releases/download/v0.64.0/frp_0.64.0_linux_amd64.tar.gz tar -xzf frp_0.64.0_linux_amd64.tar.gz cd frp_0.64.0_linux_amd64 5.2 Create FRP Client Configuration # Create configuration file cat > frpc.toml << 'EOF' [common] server_addr = "101.132.148.140" server_port = 7000 [fnos_auth] method = "token" token = "Qws@33615336" [fnos_transport] protocol = "tcp" tls_enable = true [fnos_web_5666] type = "tcp" local_ip = "127.0.0.1" local_port = 5666 remote_port = 5666 [fnos_emby_8096] type = "tcp" local_ip = "127.0.0.1" local_port = 8096 remote_port = 8096 [fnos_ssh_2233] type = "tcp" local_ip = "127.0.0.1" local_port = 22 remote_port = 2233 EOF Note: ...

2025-11-13 · 7 min · geekhuashan

Quick Guide to Setting up Emby Media System on Generic VPS

🚀 Quick Guide to Setting up Emby Media System on Generic VPS 🧠 Overview This tutorial teaches you how to build a complete media system on a VPS, based on Docker environment, achieving: CloudDrive2: Mount cloud storage resources like Baidu Cloud, Aliyun Drive, etc. Emby: Media server for managing and streaming videos online MetaTube: Advanced scraping plugin for Emby that automatically completes video metadata, covers, and actor information The advantages of this solution are: ...

2025-11-13 · 4 min · geekhuashan

Deploying Sub-Store on VPS (Docker Compose + Caddy)

Deploying Sub-Store on VPS (Docker Compose + Caddy) Sub-Store is an advanced subscription management tool suitable for Loon, Surge, Quantumult X, Shadowrocket, and Clash clients. This tutorial will guide you on how to deploy both Caddy and Sub-Store services simultaneously using Docker Compose. 1. Create Complete Docker Compose File Create a Docker Compose file containing both Caddy and Sub-Store: nano docker-compose.yml Paste the following content: version: '3.8' services: caddy: image: caddy:latest container_name: caddy restart: always ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data - caddy_config:/config networks: - app_network logging: driver: "json-file" options: max-size: "10m" max-file: "3" sub-store: image: xream/sub-store:latest container_name: sub-store restart: always volumes: - sub_store_data:/opt/app/data environment: - SUB_STORE_BACKEND_API_PORT=3001 - SUB_STORE_BACKEND_PREFIX=true - SUB_STORE_FRONTEND_BACKEND_PATH=/sEcUrEpaThExaMpLe98765 expose: - "3001" networks: - app_network logging: driver: "json-file" options: max-size: "10m" max-file: "3" networks: app_network: driver: bridge volumes: caddy_data: caddy_config: sub_store_data: Note: ...

2025-05-09 · 9 min · geekhuashan