Jonline是一个联邦开源社区规模社交网络,采用Rust、React、Flutter构建,并结合gRPC和HTTP技术。本镜像在标准(非精简版)Debian服务器上运行Jonline,暴露Flutter Web应用(端口80、8000、443,当通过环境变量启用TLS时)和Jonline gRPC后端(端口27707)。
如果系统安装了make、Docker以及提供createdb命令的Postgres(已加入PATH),最简单的方法是克隆GitHub仓库并使用Jonline的Makefile(注意使用backend/.env-example中的环境变量和backend/Makefile中的Make目标):
bashgit clone ***:JonLatane/jonline.git cd jonline # 运行createdb jonline_dev,并在后台本地运行MinIO的Docker镜像 make local_db_create local_minio_create # 启动Jonline最新镜像 docker run --rm --env-file=backend/.env-example \ -p 27707:27707 -p 80:80 -p 8000:8000 -p 443:443 \ jonlatane/jonline
完成后清理数据,只需执行make local_db_delete local_minio_delete。
Postgres设置留给读者自行操作,因为其已有完善文档且因平台而异(Homebrew、apt等)。最终需创建数据库jonline_dev、用户db_user和密码secure_password,并满足:
db_user能执行数据库迁移(可能需要以Postgres管理员身份执行ALTER USER db_user WITH SUPERUSER)db_user连接以下命令将在当前工作目录创建jonline-minio-data目录,并启动名为jonline-dev-minio的本地MinIO(S3兼容对象存储服务):
bashmkdir jonline-minio-data docker run -d -p 9000:9000 -p 9090:9090 --name jonline-dev-minio \ -v $(pwd)/jonline-minio-data:/data \ -e "MINIO_ROOT_USER=ROOTNAME" \ -e "MINIO_ROOT_PASSWORD=CHANGEME123" \ minio/minio server /data --console-address ":9090"
可通过http://localhost:9090访问MinIO控制台。
以下命令将针对已配置的Postgres和MinIO启动最新Jonline镜像:
bashdocker run --rm -e DATABASE_URL=postgres://db_user:***/jonline_dev \ -e MINIO_ENDPOINT=[***] \ -e MINIO_REGION= \ -e MINIO_BUCKET=jonline-dev \ -e MINIO_ACCESS_KEY=ROOTNAME \ -e MINIO_SECRET_KEY=CHANGEME123 \ -p 27707:27707 -p 80:80 -p 8000:8000 -p 443:443 \ jonlatane/jonline
Jonline通过环境变量提供配置参数(包括密钥):
DATABASE_URL:Jonline连接的Postgres数据库URL(包含凭据)。MINIO_ENDPOINT、MINIO_REGION、MINIO_BUCKET、MINIO_ACCESS_KEY、MINIO_SECRET_KEY:Amazon S3/MinIO兼容对象存储的凭据。目前MinIO是必需的,未来可能会变为可选。TLS_KEY、TLS_CERT:TLS密钥和证书。若未提供,Jonline不会启动安全服务器;若无效,Jonline会记录错误但仍在其他端口运行非安全服务器。若证书有效,端口80和8000的Web服务器会将请求从[***][:8000]/path/to转发至[***]。
CA_CERT(仅高级用户,用于自定义CA和/或双向TLS设置):Jonline后端的CA证书,用于自行在gRPC服务上设置双向TLS(注意:端口443的安全Web服务器不支持自定义CA,在此配置下可能崩溃,但Tonic/gRPC Jonline后端仍可运行)。bash管理服务器docker container ls获取运行Jonline的容器ID。docker exec -it <ContainerID> bash打开bash。Makefile的K8s部署系统,从Jonline仓库目录执行cd deploys,然后运行make deploy_be_shell(若命名空间非默认的jonline,可使用NAMESPACE=my-namespace deploy_be_shell)。deploy_be_shell目标对应的kubectl命令。Jonline基于Debian镜像构建,因此可轻松安装和使用Debian服务器管理工具:
apt install htop && htop。
curl、psql和grpcurl。DATABASE_URL密钥:echo $DATABASE_URL。
psql $DATABASE_URL。grpcurl测试Jonline服务器:./opt/grpcurl(例如./opt/grpcurl jonline.io:27707 list)。Jonline工具位于/opt目录,依赖DATABASE_URL密钥,服务器正常运行时即可使用:
./opt/set_permission my_username admin on
admin替换为Jonline协议文档中定义的任何权限(不区分大小写)。./opt/delete_expired_tokens
./opt/delete_preview_images
/opt/generate_preview_images二进制文件不可用。由于Chromium Headless体积较大,提供了单独的jonline_preview_generator镜像。若需在主服务器上安装Chromium Headless并使用此二进制文件,可执行Jonline仓库中deploys/docker/preview_generator/Dockerfile内的命令。Jonline暴露以下端口:
27707:Jonline协议端口,提供gRPC服务(支持Web和/或TLS)及gRPC反射服务。443:当TLS_KEY和TLS_CERT有效时,启动安全HTTPS服务器,提供Tamagui(默认)或Flutter UI。80和8000:非安全HTTPS服务器。当TLS_KEY和TLS_CERT有效时,重定向至端口443的HTTPS服务器;否则直接提供Tamagui(默认)或Flutter UI。/opt/jonline:Jonline主服务器(容器入口点)/opt/delete_expired_tokens:删除过期刷新令牌和身份验证令牌的任务/opt/delete_preview_images:删除Jonline预览图片的一次性任务(通常用于让jonline_preview_generator重新生成)来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429