保姆级教程:用 Docker快速搭建OTS私密分享平台
保姆级教程:用 Docker快速搭建OTS私密分享平台,数据安全自己掌控
1.1OTS 项目简介:
1.2 OTS主要特点:
2.1 本地环境规划
2.2 本次实践介绍
3.1 检查Docker服务状态
3.2 检查Docker版本
3.3 检查docker compose 版本
5.1 创建部署目录
5.2 docker compose方式部署
5.3 创建OTS容器
5.4 查看OTS容器状态
5.5 检查OTS容器日志
7.1 安装nginx
7.2 创建证书相关文件
6.3 修改nginx配置文件
7.4 重启nginx服务
一、OTS介绍
1.1OTS 项目简介:
OTS(One-Time Secret)是一个安全的一次性秘密分享平台,用户可在浏览器中加密敏感信息,生成一次性访问链接,确保秘密仅被读取一次且服务器无法获知其内容。
1.2 OTS主要特点:
所有秘密在浏览器端使用 AES-256 对称加密,保障传输前的数据安全。
服务器从未接收明文秘密或解密密钥,无法窥探用户数据。
秘密在首次被访问后立即永久删除,确保仅限一次性查看。
二、本次实践规划
2.1 本地环境规划
本次实践为个人测试环境,操作系统版本为 Ubuntu 24.04.2 LTS。

2.2 本次实践介绍
1.本次实践部署环境为个人测试环境,生产环境请谨慎; 2.在Docker环境下部署OTS秘密分享平台。
三、本地环境检查
3.1 检查Docker服务状态
检查Docker服务是否正常运行,确保Docker正常运行。
root@jeven:~# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
Active: active (running) since Sun 2025-11-02 07:06:57 UTC; 3 days ago
TriggeredBy: ● docker.socket
Main PID: 889 (dockerd)
Tasks: 82
Memory: 1.1G (peak: 2.8G)
CPU: 6min 1.860s
CGroup: /system.slice/docker.service

3.2 检查Docker版本
检查Docker版本
root@jeven:~# docker -v
Docker version 28.5.0, build 887030f
3.3 检查docker compose 版本
检查Docker compose版本,确保2.0以上版本。
root@jeven:~# docker compose version
Docker Compose version v2.39.4
四、拉取OTS镜像
下载OTS镜像,镜像名称为:
ghcr.io/luzifer/ots:v1.19.1
root@jeven:~# docker pull ghcr.io/luzifer/ots:v1.19.1
v1.19.1: Pulling from luzifer/ots
2d35ebdb57d9: Already exists
83e3dab6001c: Pull complete
6044a32e87f9: Pull complete
Digest: sha256:494a6978e4274ce68d5a56da7db70db44ad05cd72095dc4c3dd79915cb48ec22
Status: Downloaded newer image for ghcr.io/luzifer/ots:v1.19.1
ghcr.io/luzifer/ots:v1.19.1
五、部署OTS服务
5.1 创建部署目录
创建部署目录
mkdir -p /data/ots && cd /data/ots
5.2 docker compose方式部署
新建及编辑docker-compose.yaml文件,宿主机映射端口可自行设置,注意防止端口冲突。
vim docker-compose.yaml
version: "3"
services:
app:
image: ghcr.io/luzifer/ots:v1.19.1
container_name: ots-app
restart: always
ports:
- 3900:3000
environment:
# Optional, see "Customization" in README
#CUSTOMIZE: '/etc/ots/customize.yaml'
# See README for details
REDIS_URL: redis://redis:6379/0
# 168h = 1w
SECRET_EXPIRY: "604800"
# "mem" or "redis" (See README)
STORAGE_TYPE: redis
depends_on:
- redis
redis:
image: redis:latest
container_name: ots-redis
restart: always
volumes:
- ./data:/data
5.3 创建OTS容器
执行以下命令,创建OTS容器。
5.4 查看OTS容器状态
检查OTS容器运行状态,确保OTS容器正常启动。
root@jeven:/data/ots# docker compose ps
WARN[0000] /data/ots/docker-compose.yaml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
ots-app ghcr.io/luzifer/ots:v1.19.1 "/usr/local/bin/ots …" app 14 minutes ago Up 14 minutes 0.0.0.0:3900->3000/tcp, [::]:3900->3000/tcp
ots-redis redis:latest "docker-entrypoint.s…" redis 14 minutes ago Up 14 minutes 6379/tcp
5.5 检查OTS容器日志
检查容器运行日志,确保OTS服务正常运行。
六、访问OTS初始页
浏览器地址:
http://<个人的服务器IP>:3900,访问OTS初始页。如果无法访问,请确保宿主机的防火墙已关闭或已放行相关端口,对于云服务器还需配置相应的安全组规则。

七、配置反向代理
7.1 安装nginx
由于是测试环境,本次反向代理直接部署在本地Docker宿主机同一台服务器上,直接使用apt快速安装nginx。
apt -y install nginx
启动nginx服务
root@jeven:/data/ots# systemctl enable --now nginx
Synchronizing state of nginx.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable nginx
检查nginx服务状态
7.2 创建证书相关文件
生成私钥
openssl genrsa -out nginx.key 2048
生成证书
openssl req -new -key nginx.key -out nginx.csr
openssl x509 -req -in nginx.csr -signkey nginx.key -out nginx.pem
检查证书相关文件
root@jeven:/data/ots# ls
data docker-compose.yaml nginx.csr nginx.key nginx.pem
6.3 修改nginx配置文件
修改nginx配置文件/etc/nginx/nginx.conf:先提前备份nginx.conf文件,防止配置文件丢失。
mv /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
修改 nginx.conf 文件,新增一个 server 配置块:将 ssl_certificate 和 ssl_certificate_key 的路径替换为你实际存放自签名证书的目录;将 proxy_pass 中的地址和端口替换为你的后端服务所在服务器的 IP 和端口。
vim /etc/nginx/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
# ========== 新增:HTTPS 反向代理 5900 -> 3900 ==========
server {
listen 5900 ssl;
server_name localhost;
ssl_certificate /data/ots/nginx.pem;
ssl_certificate_key /data/ots/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://192.168.3.88:3900;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
}
}
# ========== 原有的 HTTP 80 示例(可选保留或删除)==========
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# ========== 原有的 HTTPS 443 示例(可选保留或删除)==========
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /data/ots/nginx.pem;
ssl_certificate_key /data/ots/nginx.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
root html;
index index.html index.htm;
}
}
}
7.4 重启nginx服务
检查配置文件
root@jeven:/data/ots# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
重启nginx服务
systemctl restart nginx
八、访问OTS服务首页
重新浏览器访问:https://192.168.3.88:5900/
在这里插入图片描述在这里插入图片描述
创建测试机密信息:填写机密内容,附加文件后,点击确认“创建机密”选项。
在这里插入图片描述
在其余电脑打开访问链接,效果如下所示:

九、总结
通过本次实战,我们成功使用 Docker 快速部署了 OTS 私密信息分享平台,体现了容器化部署的高效与便捷。结合 Nginx 反向代理和自签名证书,实现了 HTTPS 安全访问,提升了服务的安全性与可用性。整个过程涵盖了环境检查、镜像拉取、服务编排、日志排查及网络配置等关键运维环节,适合初学者掌握 DevOps 基础流程。未来可进一步集成域名、自动证书续签(如 Let's Encrypt)和持久化存储,构建更完善的生产级私有服务。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~



