version: '3.8'

# 最基本的方式，覆盖入口点
# docker run -v $(pwd)/test:/test -it --rm   --entrypoint /bin/bash  fy93:latest
# gocryptfs
# 进入已运行的容器进行命令交互：
#   docker exec -it sftp-encrypted-server /bin/bash
services:
  sftp-encrypted:
    # 使用本地构建的镜像
    # build: .
    # 或使用私有仓库中的镜像
    image: note-server.work:5000/fy93-ssh-server
    container_name: sftp-encrypted-server
    restart: unless-stopped
    
    # 端口映射（主机端口:容器端口）
    ports:
      - "2222:22"  # SFTP/SSH端口
      # 可以映射多个端口给不同的服务器使用
      # - "2223:22"  # 第二个实例
    
    # 环境变量配置
    environment:
      # 必需：加密卷密码（必须更改！）
      #- ENCRYPTION_PASSWORD=${ENCRYPTION_PASSWORD:-YourStrongPassword123!}
      # 必需：SFTP用户密码
      #- SFTP_PASSWORD=${SFTP_PASSWORD:-SyncUserPassword456@}
      # 可选：SFTP用户名（默认syncuser）
      #- SFTP_USER=${SFTP_USER:-syncuser}
      # 可选：加密卷大小GB（默认5GB）
      #- VOLUME_SIZE_GB=${VOLUME_SIZE_GB:-5}
      # 可选：SSH公钥（优先使用密钥认证）
      #- SSH_PUBLIC_KEY=${SSH_PUBLIC_KEY}
      # 可选：时区设置
      - TZ=${TZ:-Asia/Shanghai}
    
    # 数据卷配置
    volumes:
      # 加密数据存储卷
      #- ./sftp_data:/encrypted-storage
      # 可选：配置文件挂载（方便修改配置）
      #- ./config/sshd_config:/etc/ssh/sshd_config:ro
      # 可选：日志目录
      - ./logs:/var/log
      # 
      - ./test:/test
      #
      - ./wireguard:/wireguard
      - ./disk:/disk
    
    # 设备映射（LUKS需要）
    devices:
      - /dev/fuse:/dev/fuse
      - /dev/mapper:/dev/mapper
    # 权限：新增 WireGuard 必需的网络权限（保留原有 SYS_ADMIN）
    cap_add:
      - SYS_ADMIN
      - NET_ADMIN
      - NET_RAW
      - ALL     # 可选：直接赋予所有 Linux 能力（极端可信环境下）
    # 可选：特权模式（等同于宿主机 root 权限，彻底解决所有权限问题）
    privileged: true
       
    # 资源限制
    deploy:
      resources:
        limits:
          memory: 2516M
          cpus: '1.0'
        reservations:
          memory: 256M
          cpus: '0.5'
       
    # 网络配置
    networks:
      - sftp-network

# 自定义网络
networks:
  sftp-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.20.0.0/16

