mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	* Create zitadel-install.sh * Create zitadel.json * Create zitadel.sh * Update zitadel.sh Edit reference back to upstream build.func * Update zitadel.json Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel.sh Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel.sh Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel.sh Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel.sh Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel.sh * Update zitadel-install.sh Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel-install.sh Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> * Update zitadel.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update zitadel.json Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Use declared variables in config files * Remove other architectures * Update to fit changes requested Include mc for install; removal of variable ARCH and put into direct links; correct the default resources required * Update zitadel.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update zitadel-install.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Update zitadel-install.sh Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> * Made changes to fit suggestions * Update zitadel-install.sh correct version output * Update zitadel-install.sh * Update path for version.txt * Set update part default to our project defaults * Update zitadel.sh, Remove v befor ${RELEASE} * Update zitadel-install.sh * Created Seafile script * Update seafile-install.sh Removed sudo and tarball when cleaning up. * Update seafile-install.sh * Updated script Corrected source and remove comments * Move dependencies Move Python installation and dependencies down to Python block. Fix typos. * Update seafile-install.sh Missing -y * Fix typo * Remove python lib deps version pinning * Update seafile-install.sh * Use generated password instead of plain text * Change reference * Reset reference * Update seafile-install.sh * Update seafile.json * Fix syntax error * Fix uploading files error and broken MOTD * Fix systemd file and corrected domain.sh script * Added better explanation of domain.sh script usage * Edited script creation date --------- Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com> Co-authored-by: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
		
			
				
	
	
		
			289 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			289 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#!/usr/bin/env bash
 | 
						|
 | 
						|
# Copyright (c) 2021-2025 community-scripts ORG
 | 
						|
# Author: dave-yap
 | 
						|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
 | 
						|
# Source: https://seafile.com/
 | 
						|
 | 
						|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
 | 
						|
color
 | 
						|
verb_ip6
 | 
						|
catch_errors
 | 
						|
setting_up_container
 | 
						|
network_check
 | 
						|
update_os
 | 
						|
 | 
						|
msg_info "Installing Dependencies (Patience)"
 | 
						|
$STD apt-get install -y \
 | 
						|
    sudo \
 | 
						|
    mc \
 | 
						|
    wget \
 | 
						|
    expect
 | 
						|
msg_ok "Installed Dependencies"
 | 
						|
 | 
						|
msg_info "Installing MariaDB"
 | 
						|
$STD apt-get install -y mariadb-server
 | 
						|
systemctl start mariadb
 | 
						|
msg_ok "Installed MariaDB"
 | 
						|
 | 
						|
msg_info "Setup MariaDB for Seafile"
 | 
						|
CCNET_DB="ccnet_db"
 | 
						|
SEAFILE_DB="seafile_db"
 | 
						|
SEAHUB_DB="seahub_db"
 | 
						|
DB_USER="seafile"
 | 
						|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
 | 
						|
ADMIN_EMAIL="admin@localhost.local"
 | 
						|
ADMIN_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
 | 
						|
sudo -u mysql mysql -s -e "CREATE DATABASE $CCNET_DB CHARACTER SET utf8;"
 | 
						|
sudo -u mysql mysql -s -e "CREATE DATABASE $SEAFILE_DB CHARACTER SET utf8;"
 | 
						|
sudo -u mysql mysql -s -e "CREATE DATABASE $SEAHUB_DB CHARACTER SET utf8;"
 | 
						|
sudo -u mysql mysql -s -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
 | 
						|
sudo -u mysql mysql -s -e "GRANT ALL PRIVILEGES ON $CCNET_DB.* TO '$DB_USER'@localhost;"
 | 
						|
sudo -u mysql mysql -s -e "GRANT ALL PRIVILEGES ON $SEAFILE_DB.* TO '$DB_USER'@localhost;"
 | 
						|
sudo -u mysql mysql -s -e "GRANT ALL PRIVILEGES ON $SEAHUB_DB.* TO '$DB_USER'@localhost;"
 | 
						|
{
 | 
						|
    echo "Application Credentials"
 | 
						|
    echo "CCNET_DB: $CCNET_DB"
 | 
						|
    echo "SEAFILE_DB: $SEAFILE_DB"
 | 
						|
    echo "SEAHUB_DB: $SEAHUB_DB"
 | 
						|
    echo "DB_USER: $DB_USER"
 | 
						|
    echo "DB_PASS: $DB_PASS"
 | 
						|
    echo "ADMIN_EMAIL: $ADMIN_EMAIL"
 | 
						|
    echo "ADMIN_PASS: $ADMIN_PASS"
 | 
						|
} >> ~/seafile.creds
 | 
						|
msg_ok "MariaDB setup for Seafile"
 | 
						|
 | 
						|
msg_info "Installing Seafile Python Dependencies"
 | 
						|
$STD apt-get install -y \
 | 
						|
    python3 \
 | 
						|
    python3-dev \
 | 
						|
    python3-setuptools \
 | 
						|
    python3-pip \
 | 
						|
    libmariadb-dev \
 | 
						|
    ldap-utils \
 | 
						|
    libldap2-dev \
 | 
						|
    libsasl2-dev \
 | 
						|
    pkg-config
 | 
						|
$STD pip3 install \
 | 
						|
    django \
 | 
						|
    future \
 | 
						|
    mysqlclient \
 | 
						|
    pymysql \
 | 
						|
    pillow \
 | 
						|
    pylibmc \
 | 
						|
    captcha \
 | 
						|
    markupsafe \
 | 
						|
    jinja2 \
 | 
						|
    sqlalchemy \
 | 
						|
    psd-tools \
 | 
						|
    django-pylibmc \
 | 
						|
    django_simple_captcha \
 | 
						|
    djangosaml2 \
 | 
						|
    pysaml2 \
 | 
						|
    pycryptodome \
 | 
						|
    cffi \
 | 
						|
    lxml \
 | 
						|
    python-ldap
 | 
						|
msg_ok "Installed Seafile Python Dependecies"
 | 
						|
 | 
						|
msg_info "Installing Seafile"
 | 
						|
IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
 | 
						|
mkdir -p /opt/seafile
 | 
						|
useradd seafile
 | 
						|
mkdir -p /home/seafile
 | 
						|
chown seafile: /home/seafile
 | 
						|
chown seafile: /opt/seafile
 | 
						|
$STD su - seafile -c "wget -qc https://s3.eu-central-1.amazonaws.com/download.seadrive.org/seafile-server_11.0.13_x86-64.tar.gz"
 | 
						|
$STD su - seafile -c "tar -xzf seafile-server_11.0.13_x86-64.tar.gz -C /opt/seafile/"
 | 
						|
$STD su - seafile -c "expect <<EOF
 | 
						|
spawn bash /opt/seafile/seafile-server-11.0.13/setup-seafile-mysql.sh
 | 
						|
expect {
 | 
						|
    \"Press ENTER to continue\" {
 | 
						|
        send \"\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"What is the name of the server\" {
 | 
						|
        send \"Seafile\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"What is the ip or domain of the server\" {
 | 
						|
        send \"$IP\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"Which port do you want to use for the seafile fileserver\" {
 | 
						|
        send \"8082\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"1 or 2\" {
 | 
						|
        send \"2\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"What is the host of mysql server\" {
 | 
						|
        send \"localhost\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"What is the port of mysql server\" {
 | 
						|
        send \"3306\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"Which mysql user to use for seafile\" {
 | 
						|
        send \"seafile\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"What is the password for mysql user\" {
 | 
						|
        send \"$DB_PASS\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"Enter the existing database name for ccnet\" {
 | 
						|
        send \"$CCNET_DB\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"Enter the existing database name for seafile\" {
 | 
						|
        send \"$SEAFILE_DB\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"Enter the existing database name for seahub\" {
 | 
						|
        send \"$SEAHUB_DB\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect {
 | 
						|
    \"Press ENTER to continue, or Ctrl-C to abort\" {
 | 
						|
        send \"\r\"
 | 
						|
    }
 | 
						|
}
 | 
						|
expect eof
 | 
						|
EOF"
 | 
						|
msg_ok "Installed Seafile"
 | 
						|
 | 
						|
msg_info "Setting up Memcached"
 | 
						|
$STD apt-get install -y \
 | 
						|
    memcached \
 | 
						|
    libmemcached-dev
 | 
						|
$STD pip3 install \
 | 
						|
    pylibmc \
 | 
						|
    django-pylibmc
 | 
						|
systemctl enable --now -q memcached
 | 
						|
cat <<EOF >>/opt/seafile/conf/seahub_settings.py
 | 
						|
CACHES = {
 | 
						|
    'default': {
 | 
						|
        'BACKEND': 'django_pylibmc.memcached.PyLibMCCache',
 | 
						|
        'LOCATION': '127.0.0.1:11211',
 | 
						|
    },
 | 
						|
}
 | 
						|
EOF
 | 
						|
msg_ok "Memcached Started"
 | 
						|
 | 
						|
msg_info "Adjusting Conf files"
 | 
						|
sed -i "0,/127.0.0.1/s/127.0.0.1/0.0.0.0/" /opt/seafile/conf/gunicorn.conf.py
 | 
						|
sed -i "0,/SERVICE_URL = \"http:\/\/$IP\"/s/SERVICE_URL = \"http:\/\/$IP\"/SERVICE_URL = \"http:\/\/$IP:8000\"/" /opt/seafile/conf/seahub_settings.py
 | 
						|
echo -e "\nFILE_SERVER_ROOT = \"http://$IP:8082\"" >> /opt/seafile/conf/seahub_settings.py
 | 
						|
echo -e "CSRF_TRUSTED_ORIGINS = [\"http://$IP/\"]" >> /opt/seafile/conf/seahub_settings.py
 | 
						|
echo -e "ALLOWED_HOSTS = [\"$IP\"]" >> /opt/seafile/conf/seahub_settings.py
 | 
						|
echo -e "CSRF_TRUSTED_ORIGINS = ['http://$IP/']" >> /opt/seafile/conf/seahub_settings.py
 | 
						|
msg_ok "Conf files adjusted"
 | 
						|
 | 
						|
msg_info "Setting up Seafile" 
 | 
						|
$STD su - seafile -c "bash /opt/seafile/seafile-server-latest/seafile.sh start"
 | 
						|
$STD su - seafile -c "expect <<EOF
 | 
						|
spawn bash /opt/seafile/seafile-server-latest/seahub.sh start
 | 
						|
expect {
 | 
						|
    \"email\" {
 | 
						|
        send \"$ADMIN_EMAIL\r\"
 | 
						|
        }
 | 
						|
    }
 | 
						|
expect {
 | 
						|
    \"password\" {
 | 
						|
        send \"$ADMIN_PASS\r\"
 | 
						|
        }
 | 
						|
    }
 | 
						|
expect {
 | 
						|
    \"password again\" {
 | 
						|
        send \"$ADMIN_PASS\r\"
 | 
						|
        }
 | 
						|
    }
 | 
						|
expect eof
 | 
						|
EOF"
 | 
						|
$STD su - seafile -c "bash /opt/seafile/seafile-server-latest/seahub.sh stop" || true
 | 
						|
$STD su - seafile -c "bash /opt/seafile/seafile-server-latest/seafile.sh stop" || true
 | 
						|
msg_ok "Seafile setup"
 | 
						|
 | 
						|
msg_info "Creating Services"
 | 
						|
cat <<EOF >/etc/systemd/system/seafile.service
 | 
						|
[Unit]
 | 
						|
Description=Seafile File-hosting
 | 
						|
After=network.target mysql.service memcached.service
 | 
						|
Wants=mysql.service memcached.service
 | 
						|
 | 
						|
[Service]
 | 
						|
Type=oneshot
 | 
						|
User=seafile
 | 
						|
Group=seafile
 | 
						|
WorkingDirectory=/opt/seafile
 | 
						|
RemainAfterExit=yes
 | 
						|
 | 
						|
ExecStart=/opt/seafile/seafile-server-latest/seafile.sh start 
 | 
						|
ExecStart=/opt/seafile/seafile-server-latest/seahub.sh start
 | 
						|
ExecStop=/opt/seafile/seafile-server-latest/seahub.sh stop 
 | 
						|
ExecStop=/opt/seafile/seafile-server-latest/seafile.sh stop
 | 
						|
 | 
						|
Restart=on-failure
 | 
						|
RestartSec=5s
 | 
						|
 | 
						|
[Install]
 | 
						|
WantedBy=multi-user.target
 | 
						|
EOF
 | 
						|
systemctl enable --now -q seafile.service
 | 
						|
msg_ok "Created Services"
 | 
						|
 | 
						|
msg_info "Creating External Storage script"
 | 
						|
cat <<'EOF' >~/external-storage.sh
 | 
						|
#!/bin/bash
 | 
						|
STORAGE_DIR="/path/to/your/external/storage"
 | 
						|
 | 
						|
# Move the seafile-data folder to external storage
 | 
						|
mv /opt/seafile/seafile-data $STORAGE_DIR/seafile-data
 | 
						|
 | 
						|
# Create a symlink for access
 | 
						|
ln -s $STORAGE_DIR/seafile-data /opt/seafile/seafile-data
 | 
						|
EOF
 | 
						|
chmod +x ~/external-storage.sh
 | 
						|
msg_ok "Bash Script for External Storage created"
 | 
						|
 | 
						|
msg_info "Creating Domain access script"
 | 
						|
cat <<'EOF' >~/domain.sh
 | 
						|
#!/bin/bash
 | 
						|
DOMAIN=$1
 | 
						|
IP=$(ip a s dev eth0 | awk '/inet / {print $2}' | cut -d/ -f1)
 | 
						|
DOMAIN_NOSCHEME=$(echo $DOMAIN | sed 's|^https://||')
 | 
						|
 | 
						|
#Change the CORS to provided domain
 | 
						|
sed -i "s|SERVICE_URL = \"http://$IP:8000\"|SERVICE_URL = \"$DOMAIN\"|g" /opt/seafile/conf/seahub_settings.py
 | 
						|
sed -i "s|CSRF_TRUSTED_ORIGINS = \[\"http://$IP/\"\]|CSRF_TRUSTED_ORIGINS = \[\"$DOMAIN/\"\]|g" /opt/seafile/conf/seahub_settings.py
 | 
						|
sed -i "s|FILE_SERVER_ROOT = \"http://$IP:8082\"|FILE_SERVER_ROOT = \"$DOMAIN/seafhttp\"|g" /opt/seafile/conf/seahub_settings.py
 | 
						|
sed -i "s|ALLOWED_HOSTS = \[\"$IP\"\]|ALLOWED_HOSTS = \[\"\.$DOMAIN_NOSCHEME\"\]|g" /opt/seafile/conf/seahub_settings.py
 | 
						|
 | 
						|
systemctl restart seafile
 | 
						|
echo "Seafile server restarted! Access it at $DOMAIN."
 | 
						|
EOF
 | 
						|
chmod +x ~/domain.sh
 | 
						|
msg_ok "Bash Script for Domain access created"
 | 
						|
 | 
						|
motd_ssh
 | 
						|
customize
 | 
						|
 | 
						|
msg_info "Cleaning up"
 | 
						|
rm -rf /home/seafile/seafile*.tar.gz
 | 
						|
$STD apt-get -y autoremove
 | 
						|
$STD apt-get -y autoclean
 | 
						|
msg_ok "Cleaned" |