Skip to content
This repository has been archived by the owner on Aug 8, 2023. It is now read-only.
/ ocean Public archive

Set up Seafile on Kubernetes

License

Notifications You must be signed in to change notification settings

valerauko/ocean

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Ocean

A Helm chart to install Seafile on a cluster.

Ocean

Usage

After installation, the Seafile clients or the web UI (available at the configured location) can be used to sync and manage files. Login as the admin user created during install and sync away!

Installation

Configure using values.

Won't work without

The below should be configured correctly for it to work as expected.

  • database
  • admin
  • location

Databases

Create the following databases and grant sensible (table creating) privileges to the user configured in database.existingSecret/USERNAME or database.username.

  • ccnet_db
  • seafile_db
  • seahub_db

Ingress

If using an ingress, some path (the official example uses seafhttp, but anything works really) should be set to route to port 8082 (where the file server is listening).

When set that way, the FILE_SERVER_ROOT should be set accordingly from the web UI (note: once set from the UI, those settings will take priority over any config/environment changes).

Configuration

Parameter Description Default
location URL for the server Default
timeZone Timezone for the server Etc/UTC
image.repository Image repository valerauko/ocean
image.tag Image tag 0.4.3
image.pullPolicy Image pull policy IfNotPresent
database.existingSecret Name of existing secret with MySQL credentials. USERNAME, PASSWORD, HOSTNAME must be present. nil
database.username User to access database seafile
database.password Above user's password ""
database.hostname MySQL database host mariadb.default.svc.cluster.local
admin.existingSecret Name of existing secret with admin user's credentials. EMAIL, PASSWORD must be present. nil
admin.email Email address of admin me@example.com
admin.password Password of admin account ""
service.type Kubernetes service type ClusterIP
service.port Kubernetes port where service is exposed 80
ingress.enabled Enables Ingress false
ingress.annotations Ingress annotations (values are templated) {}
ingress.hosts Ingress accepted hostnames ["chart-example.local"]
ingress.tls Ingress TLS configuration []
persistence.size Size of persistent volume claim 10Gi
persistence.existingClaim Use an existing PVC to persist data nil
persistence.storageClassName Type of persistent volume claim nil
persistence.accessModes Persistence access modes [ReadWriteOnce]
resources CPU/Memory resource requests/limits {}
nodeSelector Node labels for pod assignment {}
tolerations Toleration labels for pod assignment []
affinity Affinity settings for pod assignment {}
podAnnotations Pod annotations {}
podSecurityContext Pod security context {}
securityContext Security context {}

Example

For a working example check out a working ArgoCD app.

Cover photo

Photo by Ivan Bandura on Unsplash