
jonlatane/jonlineJonline是一个采用Rust、React、Flutter结合gRPC和HTTP构建的联邦式、开源、社区规模社交网络。本镜像基于标准Debian服务器(非精简版)运行Jonline,可暴露Flutter Web应用(端口80、8000和443,TLS通过环境变量启用时)及Jonline gRPC后端(端口27707)。
若系统安装了make、Docker及提供createdb命令的PostgreSQL,可通过克隆GitHub仓库使用Jonline的Makefile快速设置(需参考backend/.env-example的环境变量和backend/Makefile的Make目标):
bashgit clone ***:JonLatane/jonline.git cd jonline # 创建数据库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
需自行设置PostgreSQL(平台差异较大,如Homebrew、apt等),最终需创建:
jonline_devdb_user,密码:secure_passworddb_user需具备数据库迁移权限(可能需通过Postgres管理员执行ALTER USER db_user WITH SUPERUSER)db_user连接以下命令可在当前目录创建jonline-minio-data目录并启动本地MinIO(S3兼容对象存储)服务,名称为jonline-dev-minio:
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控制台。
以下命令可基于现有PostgreSQL和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:PostgreSQL数据库连接URL(包含凭据)MINIO_ENDPOINT:MinIO服务端点MINIO_REGION:MinIO区域(可选)MINIO_BUCKET:存储桶名称MINIO_ACCESS_KEY:访问密钥MINIO_SECRET_KEY:密钥(当前MinIO为必需依赖)TLS_KEY、TLS_CERT:TLS密钥和证书。未提供时不启动安全服务器;无效时记录错误但仍运行其他端口;有效时,80和8000端口的Web服务器会将[***][:8000]/path/to请求重定向至[***]。CA_CERT(高级用户):用于gRPC服务的自定义CA证书,支持双向TLS(注意:443端口的安全Web服务器在此配置下可能崩溃,但gRPC后端仍可运行)bash)docker container ls获取Jonline容器IDdocker exec -it <ContainerID> bash进入bashcd deploys,然后make deploy_be_shell(非默认命名空间时:NAMESPACE=my-namespace deploy_be_shell)deploy_be_shell目标的底层kubectl命令基于Debian镜像,支持Debian服务器管理工具:
apt install htop && htopcurl、psql、grpcurl(路径:/opt/grpcurl)echo $DATABASE_URLpsql $DATABASE_URL./opt/grpcurl jonline.io:27707 list工具位于/opt目录,依赖DATABASE_URL,服务器正常运行时即可使用:
./opt/set_permission my_username admin on(admin可替换为Jonline协议文档中定义的任意权限,不区分大小写)./opt/delete_expired_tokens(标准K8s部署通过CronJob自动执行)./opt/delete_preview_images(标准K8s部署通过CronJob重新生成,本镜像不包含预览图生成功能,需使用jonline_preview_generator或参考部署文档安装Chromium Headless)27707:Jonline协议端口,暴露gRPC服务及gRPC反射服务443:TLS密钥和证书有效时,运行HTTPS服务器(默认Tamagui UI,可选Flutter UI)80、8000:HTTP服务器。TLS有效时重定向至443端口;否则直接提供UI(默认Tamagui,可选Flutter)/opt/jonline:主服务器程序(容器入口点)/opt/delete_expired_tokens:删除过期刷新令牌和认证令牌的任务/opt/delete_preview_images:删除Jonline预览图片的一次性任务(通常用于让预览生成器重新生成)manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务