Pixelfed 是联邦网络中的一个开源图片分享平台,功能上可以理解为去中心化版本的 Instagram。它基于 Laravel 框架开发,支持 ActivityPub 协议,可以和其他联邦平台(比如 Mastodon)互通。部署 Pixelfed 需要一定的基础环境,包括 PHP、MySQL、Redis 和 Nginx。本文以一台全新的 Ubuntu 22.04 云服务器为例,逐步完成整个部署过程。

部署前的准备工作:服务器选型与基础软件安装
选择云服务器时,Pixelfed 对硬件要求不算高,1 核 CPU、1GB 内存就能跑起来,但如果打算承载真实用户,建议至少 2 核 2GB 内存,硬盘空间预留 20GB 以上,因为图片和缓存会逐渐占用空间。操作系统推荐 Ubuntu 22.04 LTS,软件源稳定,社区资料也多。购买服务器后先通过 SSH 登录,执行系统更新:
sudo apt update && sudo apt upgrade -y
接着安装必要的软件包,包括 Nginx、MySQL、Redis、PHP 以及 PHP 扩展。Pixelfed 目前稳定版本要求 PHP 8.1 或 8.2,所以不要使用系统默认的 PHP 7.x 版本。可以通过第三方源 Ondrej PPA 来安装 PHP 8.2:
sudo add-apt-repository ppa:ondrej/php -y && sudo apt update
安装所需的软件和 PHP 扩展时,一条命令即可完成:
sudo apt install nginx mysql-server redis-server php8.2-fpm php8.2-mysql php8.2-gd php8.2-mbstring php8.2-xml php8.2-curl php8.2-zip php8.2-bcmath php8.2-intl php8.2-redis composer -y
安装完成后,确认 PHP 版本和 Nginx 服务状态。如果一切正常,就可以进入下一步。
安装 Pixelfed 源码并配置环境变量
Pixelfed 的源码托管在 GitHub 上,使用 Composer 管理依赖。为了安全和便于管理,我们创建一个专用系统用户 pixelfed,并将站点目录放在 /var/www/pixelfed。先创建目录并克隆仓库:
sudo mkdir -p /var/www/pixelfed && sudo chown -R $USER:$USER /var/www/pixelfed
cd /var/www/pixelfed && git clone https://github.com/pixelfed/pixelfed.git .
克隆完成后,使用 Composer 安装 PHP 依赖。如果服务器内存小于 2GB,建议分两步安装,避免内存溢出:
composer install --no-dev --optimize-autoloader
如果出现内存不足错误,可以改用 COMPOSER_MEMORY_LIMIT=-1 composer install --no-dev --optimize-autoloader。依赖安装完成后,需要配置环境变量文件。Pixelfed 提供了 .env.example 作为模板,复制一份并编辑:
cp .env.example .env
使用 nano 或 vim 打开 .env 文件,重点修改以下几个参数:APP_NAME 填你的站点名称,APP_URL 填域名(没有域名可以暂时填服务器 IP),APP_ENV 保持 production,APP_DEBUG 改为 false。数据库部分填写 DB_DATABASE、DB_USERNAME、DB_PASSWORD,稍后我们会创建对应的数据库和用户。另外别忘了设置 APP_KEY,可以稍后通过命令生成。
环境变量配置完后,生成应用密钥:
php artisan key:generate
创建数据库和用户并执行初始化迁移
Pixelfed 需要 MySQL 数据库来存储用户、帖子和关系数据。登录 MySQL 控制台:
sudo mysql
在 MySQL 提示符下执行以下 SQL 语句,创建数据库 pixelfed、用户 pixelfed_user 并授权。注意把密码换成你自己的强密码:
CREATE DATABASE pixelfed CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'pixelfed_user'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL PRIVILEGES ON pixelfed.* TO 'pixelfed_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
数据库准备就绪后,回到 Pixelfed 目录,执行数据表迁移和初始数据填充:
php artisan migrate --force
php artisan passport:keys
php artisan storage:link
第一条命令会创建所有数据表;第二条生成 OAuth 密钥,用于 API 认证;第三条创建 storage 目录的软链接,让上传的图片可以通过 web 访问。如果迁移过程中出现权限错误,检查 .env 中的数据库配置是否正确,以及 MySQL 用户是否有足够权限。
配置队列、调度任务和缓存
Pixelfed 依赖队列来处理图片处理、联邦推送等耗时任务,生产环境必须运行队列 worker。同时,定时任务用于清理过期数据、发送通知等。我们可以使用 Supervisor 来管理队列进程,保证它一直运行。
先安装 Supervisor:
sudo apt install supervisor -y
创建一个 Supervisor 配置文件 /etc/supervisor/conf.d/pixelfed.conf,内容如下:
[program:pixelfed-worker]
directory=/var/www/pixelfed
command=php artisan queue:work redis --sleep=3 --tries=3 --max-time=3600
autostart=true
autorestart=true
user=www-data
numprocs=2
redirect_stderr=true
stdout_logfile=/var/www/pixelfed/storage/logs/worker.log
保存后重新读取 Supervisor 配置并启动:
sudo supervisorctl reread && sudo supervisorctl update && sudo supervisorctl start pixelfed-worker:*
缓存部分,Pixelfed 默认支持 Redis,我们已经在 .env 中设置了 REDIS_HOST=127.0.0.1 和 REDIS_PORT=6379。如果使用默认配置则无需改动。为了让配置生效,运行:
php artisan config:cache
php artisan route:cache
php artisan view:cache
这些命令会缓存配置、路由和视图,提升性能。要注意的是,如果之后修改了 .env 文件,需要重新运行 config:cache 或者先运行 config:clear。
配置 Nginx 反向代理和 HTTPS
Nginx 作为 Web 服务器,需要将请求转发给 PHP-FPM,并处理静态文件。创建站点配置文件 /etc/nginx/sites-available/pixelfed,以下是一个基本配置:
server {
listen 80;
server_name 你的域名或IP;
root /var/www/pixelfed/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
启用站点并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/pixelfed /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
如果一切正常,你的站点应该已经可以通过 HTTP 访问。生产环境强烈建议配置 HTTPS,可以使用 Let's Encrypt 的 certbot 工具免费获取证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d 你的域名
按照提示输入邮箱并同意协议,certbot 会自动修改 Nginx 配置并开启 HTTPS。
创建管理员账户并完成站点初始化
首次访问站点,需要注册一个账户,第一个注册的账户自动成为管理员。也可以在命令行直接创建管理员,避免被其他人抢注。进入项目目录,执行:
php artisan user:create
按照提示输入用户名、邮箱和密码,然后赋予管理员权限:
php artisan user:admin 你的用户名
管理员登录后,可以访问 /i/admin 进入管理后台,配置站点基本信息、上传限制、联邦设置等。建议在后台开启注册审核或关闭开放注册,根据你的使用场景决定。另外,检查存储配置是否正常:上传一张测试图片,确认图片能正常显示,并且缩略图生成无误。如果图片无法显示,通常是 storage:link 没有成功或者 Nginx 对 storage 目录的访问权限不对,可以检查文件权限并重新运行 php artisan storage:link。
常见启动失败原因与优化建议
部署过程中最常见的错误包括:PHP 版本不匹配、缺少扩展、数据库连接失败、队列进程没有启动、Nginx 配置错误导致 502。一个一个排查:先用 php -v 确认版本,用 php -m 查看已安装扩展;数据库连接失败时检查 .env 中的数据库密码和主机名;502 错误一般是 PHP-FPM socket 路径错误或权限问题,确认 /var/run/php/php8.2-fpm.sock 存在且 Nginx 用户有访问权限。队列进程如果经常退出,在 Supervisor 中设置 numprocs=2 并确保 Redis 正常运行。
性能优化方面,开启 PHP opcache,修改 /etc/php/8.2/fpm/php.ini 中的 opcache.enable=1、opcache.memory_consumption=128、opcache.max_accelerated_files=10000。同时,为上传目录启用文件缓存,减少数据库查询。如果站点访问量较大,可以考虑使用 CDN 加速图片加载,并将 Redis 作为缓存驱动保持默认。另外,定期清理 storage/logs 下的日志文件,防止磁盘被写满。
通过以上步骤,你已经成功在云服务器上部署了一个属于自己的去中心化图片社交平台。Pixelfed 的联邦特性意味着你的站点可以与其他实例互动,也可以完全独立运行。后续可以根据需要调整主题、添加扩展模块,或者升级到最新版本。只要保持数据库备份和定期更新,你的图片社区就能稳定运行很长时间。
Pixelfed部署云服务器配置去中心化图片社交修改时间:2026-10-02 22:41:17