本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

!Docker Pulls  apt install docker-compose-v2
docker run -d --restart unless-stopped --log-opt max-size=10m \ -p 8080:80 \ -e TZ=Asia/Shanghai \ -e 'CRON_MIN=1,31' \ -v freshrss_data:/var/www/FreshRSS/data \ -v freshrss_extensions:/var/www/FreshRSS/extensions \ --name freshrss \ freshrss/freshrss
参数说明:
-p 8080:80:将容器 80 端口映射到主机 8080 端口-e TZ=Asia/Shanghai:设置时区(默认 UTC)-e 'CRON_MIN=1,31':设置定时刷新订阅的分钟数(每小时的第 1 和 31 分钟)-v freshrss_data:/var/www/FreshRSS/data:持久化存储数据-v freshrss_extensions:/var/www/FreshRSS/extensions:持久化存储扩展通过浏览器访问 [***],通过 FreshRSS 网页界面完成安装,或使用命令行方式(见下文)。
可通过容器内的 CLI 命令管理 FreshRSS,命令格式:
docker exec --user www-data freshrss 命令
注意:使用 Alpine 版本镜像时,需将
--user www-data替换为--user apache
# 执行基础安装 docker exec --user www-data freshrss cli/do-install.php --default-user freshrss # 创建管理员用户 docker exec --user www-data freshrss cli/create-user.php --user freshrss --password freshrss
# 列出所有用户 docker exec --user www-data freshrss cli/list-users.php # 更新所有订阅源 docker exec --user www-data freshrss cli/actualize-user.php --user freshrss
Docker 镜像标签对应不同的 FreshRSS 版本和分支:
| 标签格式 | 说明 |
|---|---|
:latest | 默认标签,指向最新稳定版 |
:edge | 滚动更新版本,对应 git 的 edge 分支 |
:x.y.z | 特定版本,如 :1.21.0 |
:x | 主版本系列,如 :1 会自动更新到最新的 1.x 版本 |
*-alpine | 基于 Alpine Linux 的轻量版本,如 :latest-alpine |
| 变量名 | 默认值 | 说明 |
|---|---|---|
TZ | UTC | 服务器时区,参考 PHP 时区列表 |
CRON_MIN | 未设置 | cron 任务分钟数,如 1,31 表示每小时的第 1 和 31 分钟执行 |
DATA_PATH | 空 | 可写数据路径,由 constants.php 或 constants.local.php 定义 |
FRESHRSS_ENV | production | 运行环境,设为 development 启用开发模式(更多日志输出) |
COPY_LOG_TO_SYSLOG | On | 是否将日志复制到 syslog |
COPY_SYSLOG_TO_STDERR | On | 是否将 syslog 复制到标准错误输出(docker logs 可见) |
LISTEN | 80 | 内部 Apache 监听地址和端口,如 0.0.0.0:8080 |
FRESHRSS_INSTALL | 未设置 | 自动安装参数,仅在首次运行时生效 |
FRESHRSS_USER | 未设置 | 自动创建用户参数,仅在首次运行时生效 |
TRUSTED_PROXY | 未设置 | 受信任代理 IP 范围,影响日志记录和外部认证 |
OIDC_ENABLED | 0 | 是否启用 OpenID Connect 认证(仅 Debian 版本支持) |
# 拉取最新镜像 docker pull freshrss/freshrss # 停止并备份当前容器 docker stop freshrss docker rename freshrss freshrss_old # 启动新容器(使用之前的运行命令) docker run ... --name freshrss freshrss/freshrss # 确认正常运行后删除旧容器 docker rm freshrss_old
对于 Docker Hub 未提供的架构(如非 x64/arm 平台),可自行构建镜像:
# 构建 Alpine 版本(latest 分支) docker build --pull --tag freshrss/freshrss:latest -f Docker/Dockerfile-Alpine [***] # 构建 Debian 版本(edge 分支) docker build --pull --tag freshrss/freshrss:edge -f Docker/Dockerfile [***]
挂载本地代码目录进行开发:
cd ./FreshRSS/ docker run --rm \ -p 8080:80 \ -e FRESHRSS_ENV=development \ -e TZ=Asia/Shanghai \ -e 'CRON_MIN=1,31' \ -v $(pwd):/var/www/FreshRSS \ -v freshrss_data:/var/www/FreshRSS/data \ --name freshrss \ freshrss/freshrss:edge
此命令会将当前目录的代码挂载到容器中,在 8080 端口启动服务,并输出详细日志。按 Ctrl+C 停止服务。
FreshRSS 默认使用 SQLite 数据库,也可配置 PostgreSQL 或 MySQL/MariaDB。
docker network create freshrss-network
# 启动 PostgreSQL 容器 docker run -d --restart unless-stopped --log-opt max-size=10m \ -v pgsql_data:/var/lib/postgresql/data \ -e POSTGRES_DB=freshrss \ -e POSTGRES_USER=freshrss \ -e POSTGRES_PASSWORD=freshrss \ --net freshrss-network \ --name freshrss-db postgres
在 FreshRSS 安装界面中,数据库主机填写容器名 freshrss-db。
# 启动 MariaDB 容器 docker run -d --restart unless-stopped --log-opt max-size=10m \ -v mysql_data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=rootpass \ -e MYSQL_DATABASE=freshrss \ -e MYSQL_USER=freshrss \ -e MYSQL_PASSWORD=freshrss \ --net freshrss-network \ --name freshrss-db mariadb
创建 .env 文件:
BASE_URL=[***] ADMIN_EMAIL=*** ADMIN_PASSWORD=your_secure_password ADMIN_API_PASSWORD=your_api_password PUBLISHED_PORT=8080 DB_HOST=freshrss-db DB_BASE=freshrss DB_PASSWORD=freshrss DB_USER=freshrss
volumes: data: extensions: db_data: services: freshrss: image: freshrss/freshrss:latest restart: unless-stopped logging: options: max-size: 10m ports: - "${PUBLISHED_PORT}:80" volumes: - data:/var/www/FreshRSS/data - extensions:/var/www/FreshRSS/extensions environment: TZ: Asia/Shanghai CRON_MIN: '2,32' FRESHRSS_ENV: production LISTEN: 0.0.0.0:80 TRUSTED_PROXY: 172.16.0.1/12 192.168.0.1/16 FRESHRSS_INSTALL: |- --api-enabled --base-url ${BASE_URL} --db-base ${DB_BASE} --db-host ${DB_HOST} --db-password ${DB_PASSWORD} --db-type pgsql --db-user ${DB_USER} --default-user admin --language zh-CN FRESHRSS_USER: |- --api-password ${ADMIN_API_PASSWORD} --email ${ADMIN_EMAIL} --language zh-CN --password ${ADMIN_PASSWORD} --user admin depends_on: - freshrss-db networks: - freshrss-network freshrss-db: image: postgres:14-alpine restart: unless-stopped logging: options: max-size: 10m volumes: - db_data:/var/lib/postgresql/data environment: POSTGRES_DB: ${DB_BASE} POSTGRES_USER: ${DB_USER} POSTGRES_PASSWORD: ${DB_PASSWORD} networks: - freshrss-network networks: freshrss-network:
# 启动服务 docker compose up -d # 查看日志 docker compose logs -f --timestamps # 停止服务 docker compose down --remove-orphans
在 docker-compose.yml 中添加 Traefik 标签:
labels: - traefik.enable=true - traefik.http.routers.freshrss.rule=Host(`freshrss.example.com`) - traefik.http.routers.freshrss.entrypoints=websecure - traefik.http.routers.freshrss.tls.certresolver=myresolver
labels: - traefik.enable=true - traefik.http.middlewares.freshrss-stripprefix.stripprefix.prefixes=/freshrss - traefik.http.routers.freshrss.middlewares=freshrss-stripprefix - traefik.http.routers.freshrss.rule=PathPrefix(`/freshrss`) - traefik.http.routers.freshrss.entrypoints=websecure - traefik.http.routers.freshrss.tls.certresolver=myresolver
作为子目录部署的 Apache 配置示例:
ProxyPreserveHost On <Location /freshrss/> ProxyPass [***] ProxyPassReverse [***] RequestHeader set X-Forwarded-Prefix "/freshrss" RequestHeader set X-Forwarded-Proto "https" Require all granted Options none </Location>
upstream freshrss { server 127.0.0.1:8080; keepalive 64; } server { listen 80; server_name example.com; return 301 [***] } server { listen 443 ssl http2; server_name example.com; # SSL 配置省略 location /freshrss/ { proxy_pass [***] add_header X-Frame-Options SAMEORIGIN; add_header X-XSS-Protection "1; mode=block"; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Prefix /freshrss/; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_read_timeout 90; proxy_set_header Authorization $http_authorization; proxy_pass_header Authorization; } }
通过 CRON_MIN 环境变量启用,如:
docker run ... -e 'CRON_MIN=13,43' ... freshrss/freshrss
在主机创建 cron 任务:
7,37 * * * * root docker exec --user www-data freshrss php ./app/actualize_script.php > /tmp/FreshRSS.log 2>&1
Debian 版本示例:
docker run -d --restart unless-stopped --log-opt max-size=10m \ -v freshrss_data:/var/www/FreshRSS/data \ -v freshrss_extensions:/var/www/FreshRSS/extensions \ -e 'CRON_MIN=17,47' \ --net freshrss-network \ --name freshrss_cron freshrss/freshrss \ cron -f
FreshRSS 配置存储在 data/config.php 中,可通过以下步骤修改:
# 查看数据卷路径 docker volume inspect freshrss_data # 编辑配置文件(路径可能不同,请根据实际输出调整) sudo nano /var/lib/docker/volumes/freshrss_data/_data/config.php # 重启容器使配置生效 docker restart freshrss
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429