[{ALLOW view All}]
[{ALLOW edit Authenticated}]

!! Seafile

!General
* Check version with [https://www.inetone.de:444/api2/server-info/]\\
* Stop: cd $SF {{{./seahub.sh stop}}} + {{{./seafile.sh stop}}}
* Start: {{{./seafile.sh start}}} + {{{./seahub.sh start}}}
* Log: /markus/seafile/logs  seafdav.log + seafile.log + seahub.log

!Minor upgrade 8.3 > 8.4
1. Download server version into /markus/seafile, gunzip, untar\\
2. Then you have another folder "seafile-server-8.0.4"\\
3. stop, cd <new folder>\\
4. ./upgrade/minor-upgrade.sh\\
5. start\\

! WebDav
base URL = https://www.inetone.de:444/seafdav

! WebDav: error HTTP MOVE 502 Bad Gateway
check seafdav.log\\
Fixed according to [forum|https://forum.seafile.com/t/seafdav-move-command-causing-502/11582/23]
with Apache conf added:
{{{
RequestHeader edit Destination ^https: http:
}}}

! Migrate from [7.1.5 to 8.0.3|https://manual.seafile.com/upgrade/upgrade_notes_for_8.0.x/]
# Check version, Stop
# [Download|https://www.seafile.com/en/download/], {{{ gunzip *, tar xvf *}}}\\
# extract and copy, run script (start upgrade scripts from base folder, not inside upgrade folder!
{{{
cp seafile-server-8.0.3 /markus/seafile
cd /markus/seafile/seafile-server-8.0.3
./upgrade/upgrade_7.1_8.0.sh
}}}
4. Start

!Config (17.02.2021)

See [Seafile admin manualConfig Seahub with Apache|https://manual.seafile.com/deploy/deploy_with_apache/#modify-ccnetconf] at "Modify ccnet.conf and seahub_setting.py"\\
Seafile > WebInterface > Avatar-Icon > Steam Administration > Settings
{{{
SERVICE_URL = https://www.inetone.de:444
FILE_SERVER_ROOT = https://www.inetone.de:444/seafhttp
}}}

Though the docu tells "if you set the value both via Web UI and config file, the setting via Web UI will take precedence", I edited the config files, too:\\
vi .../conf/seahub_settings.py
{{{
# add following
FILE_SERVER_ROOT = 'https://www.inetone.de:444/seafhttp'
}}}
vi .../conf/ccnet.conf
{{{
# change
SERVICE_URL = https://www.inetone.de:444
}}}

__Note: When you change service URLs clean your browser cache or hard reload each page !\\
It takes a some seconds until the new settings come into effect even if the seafile has started already, so keep reloading in case!__\\
\\
For Apache there is a [proxy config|https://manual.seafile.com/deploy/https_with_apache/].\\
vi /etc/apache2/sites-available/000-default-le-ssl.conf 
{{{
<VirtualHost www.inetone.de:444>
        ServerName www.inetone.de
        ServerAlias inetone.de
        DocumentRoot /var/www
        ErrorLog ${APACHE_LOG_DIR}/seafile_443.log

    Alias /media  /markus/seafile/seafile-server-latest/seahub/media

    RewriteEngine On
    <Location /media>
        Require all granted
    </Location>

    #
    # seafile fileserver
    #
    ProxyPass /seafhttp http://127.0.0.1:8082
    ProxyPassReverse /seafhttp http://127.0.0.1:8082
    RewriteRule ^/seafhttp - [QSA,L]

    #
    # seahub
    #
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:8000/
    ProxyPassReverse / http://127.0.0.1:8000/

    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/www.inetone.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/www.inetone.de/privkey.pem
</VirtualHost>
}}}
On Errors check Seafile [FAQ|https://manual.seafile.com/faq/].\\

!New Installation on Debian (27.12.2020)
[Download|https://www.seafile.com/en/download/] > Server > Server for generic Linux
{{{
cd /markus/seafile
wget ...copy link...
tar xvf *  (this will create sub folder like seafile-server-7.0.5)
cd seafile-server-7.0.5
}}}
Note: symlink {{{seafile-server-latest}}} is created automatically from the script.\\
[Manual for deploying with MySQL|https://manual.seafile.com/deploy/using_mysql/]\\

Clean up databases?
{{{
mysql -u <user> -p
    DROP DATABASE `ccnet-db`;
    DROP DATABASE `seafile-db`;
    DROP DATABASE `seahub-db`;
}}}

Note: Seafile 7.1.x will __NOT work with Debian 9__ because some required packages are not available there.\\
You will find error {{{django.request:135 handle_uncaught_exception Internal Server Error}}} at seafileHome\logs\seahub.log !
{{{
# on Debian 10/Ubuntu 18.04
apt-get update
apt-get install python3 python3-setuptools python3-pip -y

pip3 install --timeout=3600 Pillow pylibmc captcha jinja2 sqlalchemy \
    django-pylibmc django-simple-captcha python3-ldap
}}}

%%collapsebox-closed
! {{{./setup-seafile-mysql.sh}}}
{{{
Checking python on this machine ...

-----------------------------------------------------------------
This script will guide you to setup your seafile server using MySQL.
Make sure you have read seafile server manual at

        https://download.seafile.com/published/seafile-manual/home.md

Press ENTER to continue
-----------------------------------------------------------------


What is the name of the server? It will be displayed on the client.
3 - 15 letters or digits
[ server name ] inetone

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server's ip or domain ] 185.244.195.4

Which port do you want to use for the seafile fileserver?
[ default "8082" ]

-------------------------------------------------------
Please choose a way to initialize seafile databases:
-------------------------------------------------------

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

[ 1 or 2 ] 1

What is the host of mysql server?
[ default "localhost" ]

What is the port of mysql server?
[ default "3306" ]

What is the password of the mysql root user?
[ root password ]

verifying password of user root ...  done

Enter the name for mysql user of seafile. It would be created if not exists.
[ default "seafile" ]

Enter the password for mysql user "seafile":
[ password for seafile ]

verifying password of user seafile ...  done

Enter the database name for ccnet-server:
[ default "ccnet-db" ]

Enter the database name for seafile-server:
[ default "seafile-db" ]

Enter the database name for seahub:
[ default "seahub-db" ]

---------------------------------
This is your configuration
---------------------------------

    server name:            inetone
    server ip/domain:       185.244.195.4

    seafile data dir:       /markus/seafile/seafile-data
    fileserver port:        8082

    database:               create new
    ccnet database:         ccnet-db
    seafile database:       seafile-db
    seahub database:        seahub-db
    database user:          seafile



---------------------------------
Press ENTER to continue, or Ctrl-C to abort
---------------------------------

Generating ccnet configuration ...

done
Successly create configuration dir /markus/seafile/ccnet.
Generating seafile configuration ...

Done.
done
Generating seahub configuration ...

----------------------------------------
Now creating ccnet database tables ...

----------------------------------------
----------------------------------------
Now creating seafile database tables ...

----------------------------------------
----------------------------------------
Now creating seahub database tables ...

----------------------------------------

creating seafile-server-latest symbolic link ...  done




-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------

run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }

-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------

port of seafile fileserver:   8082
port of seahub:               8000

When problems occur, Refer to

        https://download.seafile.com/published/seafile-manual/home.md

for information.
}}}
/%

{{{
/markus/seafile/seafile-server-latest/seafile.sh restart
/markus/seafile/seafile-server-latest/seahub.sh restart
}}}

Logs at {{{/markus/seafile/logs}}}
{{{
vi /markus/seafile/logs/seahub.log 
    django.request:135 handle_uncaught_exception Internal Server Error
}}}

!Initial Installation (2018)
After reading positive comments I installed seafile to my Linux root server\\

1. Info Server
{{{
> cat /proc/version
Linux version 4.4.0-66-generic (buildd@lgw01-28) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) ) #87-Ubuntu SMP Fri Mar 3 15:29:05 UTC 2017
> lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.2 LTS
Release:        16.04
Codename:       xenial
> getconf LONG_BIT
64
> uname -m
x86_64
> file /bin/bash
/bin/bash: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=0428e4834e687e231fa865562d32fbb64ce45577, stripped
}}}

2. [Download|http://seafile.com/en/download/]\\
Server for generic Linux 64bit
{{{
wget https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_6.0.8_x86-64.tar.gz
gunzip *
tar xvf *
}}}

3. See [Manual|http://manual.seafile.com/]\\
For installing and setup see ["Deploying with MySQL"|http://manual.seafile.com/deploy/using_mysql.html]\\

4. Start/Stop
Folder "seafile-server-latest" (>4.0.2)
{{{
./seafile.sh start  # Start seafile service
./seahub.sh start   # Start seahub website, port defaults to 8000

./seahub.sh stop
./seafile.sh stop
}}}

! Problem Android "Unknown Server Status"

This seems to be a device ID problem in the [source code|https://github.com/haiwen/seahub/pull/181/files].\\

See ./seafile-server-latest/seahub/seahub/api2/serializers.py


!! Upgrade

on 12.01.2017 from 4.05. to 6.0.7, see [manual|https://manual.seafile.com/deploy/upgrade.html]

1. cd /markus/seafile\\
2. stop old one\\
3. here you download the lastest server version\\
Note: you have here als folder ccnet and seafile-data\\
After gunzip and tar you have a new folder seafile-server-6.0.7\\
4. cd seafile-server-6.0.7\\
5. ls -l upgrade\\
   Here you need to call all steps, e.g. \\
     upgrade_4.0_4.1.sh\\
     upgrade_4.1_4.2.sh\\
     ...\\
   But NOT from inside folder, but one above, so \\
     upgrade/upgrade_4.0_4.1.sh\\
     upgrade/upgrade_4.1_4.2.sh\\
     ...\\
6. All upgrade set a new symlink to seafile-server-6.0.7\\
7. cd seafile-server-6.0.7\\
8. start like above, done\\

!! Migrate to new server

# Stop services
# Download and install latest version (as of Mar 2017 it was 6.0.8), follow [manual|https://manual.seafile.com/deploy/using_sqlite.html]
## create mysql databases
 {{{
create database ccnet-db default character set 'UTF8';
create database seafile-db default character set 'UTF8';
create database seahub-db default character set 'UTF8';
}}}
## create mysql seafile user
 {{{
create user 'seafile'@'localhost' identified by 'seafile';

GRANT ALL PRIVILEGES ON `ccnet-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seafile-db`.* to `seafile`@localhost;
GRANT ALL PRIVILEGES ON `seahub-db`.* to `seafile`@localhost;

SET PASSWORD FOR 'seafile'@'localhost' = PASSWORD('...your.password...');
}}}
# clean and copy folders ccnet, conf, seafile-data
# maybe: update SERVER_URL in /conf/ccnet.conf
# old versions of seafile used folder "data" and not "seafile-data" as data storage, update folder in /ccnet/seafile.ini
# export, copy, import database
 {{{
mysqldump -u root -p<password> ccnet-db > /home/proftpd/ccnet-db.sql
mysqldump -u root -p<password> seafile-db > /home/proftpd/seafile-db.sql
mysqldump -u root -p<password> seahub-db > /home/proftpd/seahub-db.sql

mysql -u root -p<password> ccnet-db < /home/proftpd/ccnet-db.sql
mysql -u root -p<password> seafile-db < /home/proftpd/seafile-db.sql
mysql -u root -p<password> seahub-db < /home/proftpd/seahub-db.sql
}}}
# Delete cache
 {{{
rm -rf /tmp/seahub_cache
}}}
# Update [mysql config|https://forum.syncwerk.com/t/solved-seahub-failure-after-mysql-5-7-upgrade/4680/3] in /conf/seahub_settings.py to
 {{{
'init_command': 'SET default_storage_engine=INNODB',
}}}
# Start services