文章目录
一、安装服务端
1.docker-compose方式
# https://cloud.seafile.com/published/seafile-manual-cn/docker/%E7%94%A8Docker%E9%83%A8%E7%BD%B2Seafile.md
# https://cloud.seafile.com/d/f4e8883db63845d29350/files/?p=%2F12.0%2Fdocker-compose.yml
services:
db:
image: ${SEAFILE_DB_IMAGE:-mariadb:10.11}
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=${SEAFILE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty}
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- "${SEAFILE_MYSQL_VOLUMES:-/opt/seafile-mysql/db}:/var/lib/mysql"
networks:
- macvlan
memcached:
image: ${SEAFILE_MEMCACHED_IMAGE:-memcached:1.6.18}
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- macvlan
seafile:
image: ${SEAFILE_IMAGE:-seafileltd/seafile-mc:12.0-latest}
container_name: seafile
ports:
- "80:80"
- ${SEAFILE_SSL_PORT:-}:443
volumes:
- ${SEAFILE_VOLUMES:-/opt/seafile-data}:/shared
environment:
- DB_HOST=${SEAFILE_MYSQL_DB_HOST:-db}
- DB_ROOT_PASSWD=${SEAFILE_MYSQL_ROOT_PASSWORD:?Variable is not set or empty}
- TIME_ZONE=${TIME_ZONE:-Asia/Shanghai}
- SEAFILE_ADMIN_EMAIL=${SEAFILE_ADMIN_EMAIL:-me@example.com}
- SEAFILE_ADMIN_PASSWORD=${SEAFILE_ADMIN_PASSWORD:-asecret}
- SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME:-example.seafile.com}
- SEAFILE_SERVER_LETSENCRYPT=${SEAFILE_SERVER_LETSENCRYPT:-false}
- FORCE_HTTPS_IN_CONF=${SEAFILE_FORCE_HTTPS_IN_CONF:-false}
depends_on:
- db
- memcached
networks:
- macvlan
networks:
macvlan:
external: true
.env文件如下:
COMPOSE_FILE='docker-compose.yml'
COMPOSE_PATH_SEPARATOR=','
# https://hub.docker.com/r/seafileltd/seafile-mc/tags
SEAFILE_IMAGE=seafileltd/seafile-mc:11.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_MEMCACHED_IMAGE=memcached:1.6.18
SEAFILE_VOLUMES=/mnt/multimedia/data/seafile/seafile-data
SEAFILE_MYSQL_VOLUMES=/mnt/multimedia/data/seafile/seafile-mysql
SEAFILE_MYSQL_DB_HOST=192.168.255.254:3366
SEAFILE_MYSQL_ROOT_PASSWORD=mariadb_867SK6
TIME_ZONE='Asia/Shanghai'
SEAFILE_SERVER_HOSTNAME=seafile.home.love
SEAFILE_SERVER_LETSENCRYPT=false
SEAFILE_FORCE_HTTPS_IN_CONF=false
SEAFILE_SSL_PORT=
SEAFILE_ADMIN_EMAIL=admin@duhongming.top
SEAFILE_ADMIN_PASSWORD=admin
2.k8s方式
2.1 不推荐官网
- resource files:https://manual.seafile.com/12.0/setup/k8s_single_node/
- helm: https://manual.seafile.com/12.0/setup/helm_chart_single_node/
2.2 推荐truecharts
https://truecharts.org/charts/stable/seafile/
helm upgrade --install -n seafile --create-namespace seafile oci://tccr.io/truecharts/seafile -f values.yaml
values.yaml文件如下:
# https://github.com/truecharts/public/blob/master/charts/stable/seafile/values.yaml
workload:
main:
podSpec:
containers:
main:
env:
SEAFILE_SERVER_HOSTNAME: "seafile.k8s.home.love"
# pwgen -s 40 1
JWT_PRIVATE_KEY: AmojlHNrSc9xOF53XNDvaL1QHn4bupGE2PvpUTJa
INIT_SEAFILE_ADMIN_EMAIL: admin@duhongming.top
INIT_SEAFILE_ADMIN_PASSWORD: admin
配置域名:
# https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/crd/http/ingressroute/
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: traefik-host
namespace: seafile
spec:
entryPoints:
- web
routes:
- match: Host(`seafile.k8s.home.love`)
kind: Rule
services:
- name: seafile
port: 13080
二、安装客户端
https://www.seafile.com/download/
1.桌面同步客户端:Windows客户端/Mac 客户端/Linux 客户端
2.移动客户端:Android 客户端/iPad/iPhone 客户端
我最喜欢的是:seafile可以把文件缓存下来,即使服务不在家,在外面也可以离线访问。
三、备份
https://cloud.seafile.com/published/seafile-manual-cn/maintain/backup_recovery.md
rsync -az /data/seafile/seafile-data/seafile /backup/seafile/seafile-data
cd /backup/seafile/seafile-db
docker exec -it seafile-mysql mysqldump -uroot -padmin --opt ccnet_db > ccnet_db.sql
docker exec -it seafile-mysql mysqldump -uroot -padmin --opt seafile_db > seafile_db.sql
docker exec -it seafile-mysql mysqldump -uroot -padmin --opt seahub_db > seahub_db.sql
四、问题
1.如何修改域名呢?
- 找到持久卷名
- 进入conf目录下,编辑seahub_settings.py,修改里面的域名即可,然后重启服务。
cd /mnt/k8s-csi/pvc-68b7cf37-cfe4-4bef-86cb-b1a225f3d079/conf
nano seahub_settings.py
# -*- coding: utf-8 -*-
SECRET_KEY = "5+m&5bf-5psobudbapiv9myd6)4jg_r!8o71&h$b3%py5t5(k#"
SERVICE_URL = "http://seafile.k8s.home.love/"
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'seahub_db',
'USER': 'seafile',
'PASSWORD': 'PLACEHOLDERPASSWORD',
'HOST': 'seafile-mariadb',
'PORT': '3306',
'OPTIONS': {'charset': 'utf8mb4'},
}
}
CACHES = {
'default': {
'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
'LOCATION': 'seafile-memcached:11211',
},
'locmem': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
},
}
COMPRESS_CACHE_BACKEND = 'locmem'
TIME_ZONE = 'Etc/UTC'
FILE_SERVER_ROOT = 'http://seafile.k8s.home.love/seafhttp'
SERVICE_URL = 'http://seafile.k8s.home.love/'
AVATAR_FILE_STORAGE = 'seahub.base.database_storage.DatabaseStorage'