armbian下的seafile部署

seafile简介

1
Seafile 是一款开源的企业云盘,注重可靠性和性能。支持 Windows, Mac, Linux, iOS, Android 平台。支持文件同步或者直接挂载到本地访问。

安装包下载地址:社区版下载传送门专业版下载传送门

社区版使用按官网来就行,专业版不付费的话限制使用三个账号,本文使用的是(9.0.2版本)[]
注意:seafile 9.0.x 版本不支持在 Centos 系统 tar 包部署,支持 Docker 方式部署

软件安装

1
apt-get update && apt-get upgrade
  • 软件依赖包

    1
    2
    apt-get install python3 python3-setuptools python3-pip python3-ldap  libmysqlclient-dev  -y
    pip3 install --timeout=3600 django==3.2.* future mysqlclient pymysql Pillow pylibmc captcha jinja2 sqlalchemy==1.4.3 psd-tools django-pylibmc django-simple-captcha pycryptodome==3.12.0 lxml
  • nginx安装

    1
    apt-get install -y nginx
  • memcached安装

    1
    2
    3
    apt-get install memcached libmemcached-dev -y
    pip3 install --timeout=3600 pylibmc django-pylibmc
    systemctl enable --now memcached
  • mariadb安装

    1
    2
    3
    apt-get install mariadb-server
    # 创建root账户
    mysqladmin -uroot password '123456'
  • seafile解压

    1
    2
    3
    4
    5
    # 到指定目录创建seafile文件夹
    mkdir -p seafile/installed
    # 将下载的seafile-server-xxx.tar.gz复制到installed文件夹中进行解压
    tar -zxf seafile-server-9.0.2-bullseye-arm32v7l.tar.gz -C ../
    chmod -R 755 seafile-server-9.0.2/

    seafile目录结构如下:
    seafile
    ├── installed
    │ └── seafile-server-9.0.2-bullseye-arm32v7l.tar.gz
    └── seafile-server-9.0.2
    ├── setup-seafile-mysql.sh
    ├── ……
    然后执行安装脚本

    1
    2
    cd seafile/seafile-server-9.0.2
    ./setup-seafile-mysql.sh

    初始化安装步骤:

    1
    2
    3
    4
    5
    6
    7
    8
    -------------------------------------------------------
    Please choose a way to initialize seafile databases:
    -------------------------------------------------------

    [1] Create new ccnet/seafile/seahub databases
    [2] Use existing ccnet/seafile/seahub databases

    # 输入 1,然后根据提示依次提供相关信息即可

相关配置

  • 修改监听地址
    vim ../conf/gunicorn.conf.py
    将其中bind地址修改成0.0.0.0:8000

  • 配置nginx
    移除nginx的默认配置rm /etc/nginx/sites-enabled/default
    vim /etc/nginx/sites-available/seafile.conf填入以下配置,通过反代理实现80端口访问seafile,同时开启webdav功能

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    server {
    listen 80;
    server_name default_server;
    proxy_set_header X-Forwarded-For $remote_addr;

    location / {
    proxy_pass http://127.0.0.1:8000;
    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-Host $server_name;
    proxy_read_timeout 1200s;
    client_max_body_size 0;
    access_log /var/log/nginx/seahub.access.log;
    error_log /var/log/nginx/seahub.error.log;
    }

    location /seafhttp {
    rewrite ^/seafhttp(.*)$ $1 break;
    proxy_pass http://127.0.0.1:8082;
    client_max_body_size 0;
    proxy_request_buffering off;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_connect_timeout 36000s;
    proxy_read_timeout 36000s;
    proxy_send_timeout 36000s;
    send_timeout 36000s;
    }

    location /media {
    root /media/sda1/seafile/seafile-server-latest/seahub;
    }

    location /seafdav {
    proxy_pass http://127.0.0.1:8080/seafdav;
    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-Host $server_name;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_read_timeout 1200s;
    client_max_body_size 0;
    access_log /var/log/nginx/seafdav.access.log seafileformat;
    error_log /var/log/nginx/seafdav.error.log;
    }

    location /:dir_browser {
    proxy_pass http://127.0.0.1:8080/:dir_browser;
    }
    }

    若要开启webdav还得修改conf/seafdav.conf如下

1
2
3
4
[WEBDAV]
enabled = true
port = 8080
share_name = /seafdav

创建符号链接: ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf

  • 配置memcached优化性能
    conf/seahub_settings.py中追加以下配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CACHES = {
    'default': {
    'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
    'LOCATION': '127.0.0.1:11211',
    },
    'locmem': {
    'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
    },
    }
    COMPRESS_CACHE_BACKEND = 'locmem'
  • seafile注册为系统服务,开启开机自启
    vim /etc/systemd/system/seafile.serviceseafile的开机自启

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [Unit]
    Description=Seafile
    After=network.target mariadb.service

    [Service]
    Type=oneshot
    ExecStart=/media/sda1/seafile/seafile-server-latest/seafile.sh start
    ExecStop=/media/sda1/seafile/seafile-server-latest/seafile.sh stop
    ExecReload=/media/sda1/seafile/seafile-server-latest/seafile.sh restart
    RemainAfterExit=yes

    [Install]
    WantedBy=multi-user.target

    vim /etc/systemd/system/seahub.serviceseahub的开机自启

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Seafile hub
After=network.target seafile.service

[Service]
ExecStart=/media/sda1/seafile/seafile-server-latest/seahub.sh start
ExecStop=/media/sda1/seafile/seafile-server-latest/seahub.sh stop
ExecReload=/media/sda1/seafile/seafile-server-latest/seahub.sh restart
Type=oneshot
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target

保存配置后设置开机自启

1
2
3
systemctl daemon-reload
systemctl enable seafile.service
systemctl enable seahub.service

启动服务

启动服务有两种方式,一般情况下先启动seafile,再启动seahub,关闭的话则反着来

1
2
seafile/seafile-server-latest/seafile.sh start # stop,restart
seafile/seafile-server-latest/seahub.sh start # stop,restart

或者使用系统服务命令

1
2
systemctl start seafile nginx
systemctl start seahub

注:如果一切配置不出错,在初次启动seahub后将会有一段配置管理员登陆信息的交互
直接访问主机地址 http://192.168.2.15 即可访问seafile,若配置有域名映射去管理面板中更改seafile、seahub服务器地址信息即可