lala.im:PingvinShare:自托管文件共享平台

運維技術·lala.im · 04-21 · 65 人浏览

原文地址:https://lala.im/9082.html,請支持原作者!該處僅作轉載。

PingvinShare是一个专注于分享文件的网盘程序,类似于市面上那些临时文件网盘,上传你要分享的文件,设置一个文件到期时间,提供一个下载地址,就是这样。
PingvinShare特性:
Share files using a link\nUnlimited file size (restricted only by disk space)\nSet an expiration date for shares\nSecure shares with visitor limits and passwords\nEmail recipients\nIntegration with ClamAV for security scans
安装需要用到的软件包:

apt -y update
apt -y install curl nginx python3-certbot-nginx
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh

新建目录、compose文件:

mkdir -p /opt/pingvin-share && cd /opt/pingvin-share && nano docker-compose.yml

写入如下配置:

version: '3.8'
services:
  pingvin-share:
    image: stonith404/pingvin-share
    restart: unless-stopped
    ports:
      - 127.0.0.1:3100:3000
    volumes:
      - "./data:/opt/app/backend/data"
      - "./data/images:/opt/app/frontend/public/img"
    depends_on:
      clamav:
        condition: service_healthy

  clamav:
    image: clamav/clamav
    restart: unless-stopped

[注意事项]
pingvinshare支持clamav反病毒,如果启用clamav,则每个上传的文件都会被clamav扫描,如果发现恶意文件则文件会被clamav自动删除。运行clamav需要用到的内存较多,如机器配置不够,可注释掉相关的配置。
配置nginx反向代理,新建nginx站点配置文件:

nano /etc/nginx/sites-available/pingvinshare

写入如下配置:

upstream pingvinshare {
    server 127.0.0.1:3100;
}

server {
    listen 80;
    listen [::]:80;
    server_name pingvinshare.example.com;

    location / {
        proxy_pass http://pingvinshare;
        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_set_header X-Forwarded-Protocol $scheme;
        client_max_body_size 0;
    }
}

启用站点:

ln -s /etc/nginx/sites-available/pingvinshare /etc/nginx/sites-enabled/pingvinshare

申请tls证书:

certbot --nginx --email [email protected] --agree-tos --no-eff-email

访问域名,注册一个账号,第一个注册的用户将成为管理员。
[重要]登录管理员账户后,需要修改程序的URL地址为反向代理的域名:

範例
测试一下clamav能否正常工作,新建一个txt文本文件,在里面写入EICAR测试文件的代码:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

将这个txt文本文件上传到pingvinshare,如果正常的话,pingvinshare会提示共享已删除:

範例
查看clamav的log应该也会有相应的信息:

範例

運維技術 Docker lala.im
Theme Jasmine by Kent Liao