-
-
Notifications
You must be signed in to change notification settings - Fork 93
Add Otter Wiki #801
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weβll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add Otter Wiki #801
Changes from all commits
445bf20
8386d9f
fae848d
e5920e4
a4c5722
ef4f898
503a8ce
1df09aa
709ee33
bc43d9e
3075c37
a9844a6
20498c9
83137fb
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
#!/usr/bin/env bash | ||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVED/main/misc/build.func) | ||
# Copyright (c) 2021-2025 community-scripts ORG | ||
# Author: CillyCil | ||
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE | ||
# Source: https://github.com/redimp/otterwiki | ||
|
||
# App Default Values | ||
# Name of the app (e.g. Google, Adventurelog, Apache-Guacamole" | ||
APP="OtterWiki" | ||
# Tags for Proxmox VE, maximum 2 pcs., no spaces allowed, separated by a semicolon ; (e.g. database | adblock;dhcp) | ||
var_tags="${var_tags:-wiki}" | ||
# Number of cores (1-X) (e.g. 4) - default are 2 | ||
var_cpu="${var_cpu:-2}" | ||
# Amount of used RAM in MB (e.g. 2048 or 4096) | ||
var_ram="${var_ram:-2048}" | ||
# Amount of used disk space in GB (e.g. 4 or 10) | ||
var_disk="${var_disk:-10}" | ||
# Default OS (e.g. debian, ubuntu, alpine) | ||
var_os="${var_os:-debian}" | ||
# Default OS version (e.g. 12 for debian, 24.04 for ubuntu, 3.20 for alpine) | ||
var_version="${var_version:-12}" | ||
# 1 = unprivileged container, 0 = privileged container | ||
var_unprivileged="${var_unprivileged:-0}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. why privileged? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Meant to be unprivileged, read it wrong |
||
|
||
header_info "$APP" | ||
variables | ||
color | ||
catch_errors | ||
|
||
function update_script() { | ||
header_info | ||
check_container_storage | ||
check_container_resources | ||
|
||
# Check if installation is present | -f for file, -d for folder | ||
if [[ ! -f /opt/otterwiki ]]; then | ||
msg_error "No ${APP} Installation Found!" | ||
exit | ||
fi | ||
|
||
# Crawling the new version and checking whether an update is required | ||
RELEASE=$(curl -fsSL https://api.github.com/repos/redimp/otterwiki/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') | ||
if [[ "${RELEASE}" != "$(cat /opt/otterwiki_version.txt)" ]] || [[ ! -f /opt/otterwiki_version.txt ]]; then | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. if [[ "${RELEASE}" != "$(cat ~/.otterwiki 2>/dev/null)" ]] || [[ ! -f ~/.otterwiki ]]; then |
||
# Stopping Services | ||
msg_info "Stopping $APP" | ||
systemctl stop otterwiki.service | ||
msg_ok "Stopped $APP" | ||
|
||
# Creating Backup | ||
msg_info "Creating Backup" | ||
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /opt/otterwiki/app-data /opt/otterwiki/settings.cfg | ||
msg_ok "Backup Created" | ||
|
||
# Execute Update | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fetch_and_deploy_gh_release "otterwiki" "redimp/otterwiki" "tarball" "latest" "/opt/otterwiki" |
||
msg_info "Updating $APP to v${RELEASE}" | ||
cd /opt/otterwiki/ || exit | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. exit not needed |
||
# Update the repository information | ||
git remote update origin | ||
# Get the latest release tag | ||
LATEST_RELEASE=$(git describe --tags $(git rev-list --tags --max-count=1)) | ||
# Create a new branch named like the latest release version. | ||
git checkout -b $LATEST_RELEASE $LATEST_RELEASE | ||
Comment on lines
+59
to
+63
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. remove git contents |
||
./venv/bin/pip install -U . | ||
msg_ok "Updated $APP to v${RELEASE}" | ||
|
||
# Starting Services | ||
msg_info "Starting $APP" | ||
systemctl start otterwiki.service | ||
msg_ok "Started $APP" | ||
|
||
# # Cleaning up | ||
# msg_info "Cleaning Up" | ||
# rm -rf [TEMP_FILES] | ||
# msg_ok "Cleanup Completed" | ||
|
||
# Last Action | ||
echo "${RELEASE}" >/opt/otterwiki_version.txt | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not needed |
||
msg_ok "Update Successful" | ||
else | ||
msg_ok "No update required. ${APP} is already at v${RELEASE}" | ||
fi | ||
exit | ||
} | ||
|
||
start | ||
build_container | ||
description | ||
|
||
msg_ok "Completed Successfully!\n" | ||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" | ||
echo -e "${INFO}${YW} Access it using the following URL:${CL}" | ||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
{ | ||
"name": "OtterWiki", | ||
"slug": "otterwiki", | ||
"categories": [ | ||
12 | ||
], | ||
"date_created": "2025-08-17", | ||
"type": "ct", | ||
"updateable": true, | ||
"privileged": false, | ||
"interface_port": 8080, | ||
"documentation": "https://otterwiki.com/", | ||
"config_path": "/opt/otterwiki/settings.cfg", | ||
"website": "https://github.com/redimp/otterwiki", | ||
"logo": "https://otterwiki.com/static/img/otterhead.png", | ||
"description": "A minimalistic wiki powered by python, markdown and git.", | ||
"install_methods": [ | ||
{ | ||
"type": "default", | ||
"script": "ct/otterwiki.sh", | ||
"resources": { | ||
"cpu": 2, | ||
"ram": 2048, | ||
"hdd": 10, | ||
"os": "Debian", | ||
"version": "12" | ||
} | ||
} | ||
], | ||
"default_credentials": { | ||
"username": null, | ||
"password": null | ||
}, | ||
"notes": [ | ||
{ | ||
"text": "The first account registered will be an admin account with access to the application settings.", | ||
"type": "info" | ||
} | ||
] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
#!/usr/bin/env bash | ||
|
||
# Copyright (c) 2021-2025 community-scripts ORG | ||
# Author: CillyCil | ||
# License: MIT | https://github.com/community-scripts/ProxmoxVED/raw/main/LICENSE | ||
# Source: https://github.com/redimp/otterwiki | ||
|
||
# Import Functions und Setup | ||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" | ||
color | ||
verb_ip6 | ||
catch_errors | ||
setting_up_container | ||
network_check | ||
update_os | ||
|
||
# Installing Dependencies | ||
msg_info "Installing Dependencies" | ||
$STD apt-get install -y \ | ||
git \ | ||
build-essential \ | ||
python3-dev \ | ||
python3-venv | ||
msg_ok "Installed Dependencies" | ||
|
||
# # Template: MySQL Database | ||
# msg_info "Setting up Database" | ||
# DB_NAME=[DB_NAME] | ||
# DB_USER=[DB_USER] | ||
# DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) | ||
# $STD mysql -u root -e "CREATE DATABASE $DB_NAME;" | ||
# $STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" | ||
# $STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" | ||
# { | ||
# echo "${APPLICATION} Credentials" | ||
# echo "Database User: $DB_USER" | ||
# echo "Database Password: $DB_PASS" | ||
# echo "Database Name: $DB_NAME" | ||
# } >>~/"$APP_NAME".creds | ||
# msg_ok "Set up Database" | ||
Comment on lines
+26
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. needed? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. No, left overs |
||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. fetch_and_deploy_gh_release "otterwiki" "redimp/otterwiki" "tarball" "latest" "/opt/otterwiki" |
||
# Setup App | ||
msg_info "Setup ${APPLICATION}" | ||
RELEASE=$(curl -fsSL https://api.github.com/repos/redimp/otterwiki/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') | ||
curl -fsSL -o "${RELEASE}.zip" "https://github.com/redimp/otterwiki/archive/refs/tags/${RELEASE}.zip" | ||
unzip -q "${RELEASE}.zip" | ||
mv "otterwiki-${RELEASE:1}/" "/opt/otterwiki" | ||
Comment on lines
+44
to
+47
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not needed because fetch_and_deploy function |
||
cd /opt/otterwiki || exit | ||
mkdir -p app-data/repository | ||
# initialize the empty repository | ||
git init -b main app-data/repository | ||
echo "REPOSITORY='${PWD}/app-data/repository'" >> settings.cfg | ||
echo "SQLALCHEMY_DATABASE_URI='sqlite:///${PWD}/app-data/db.sqlite'" >> settings.cfg | ||
echo "SECRET_KEY='$(python3 -c 'import secrets; print(secrets.token_hex())')'" >> settings.cfg | ||
python3 -m venv venv | ||
./venv/bin/pip install -U pip uwsgi | ||
./venv/bin/pip install . | ||
echo "${RELEASE}" >/opt/otterwiki_version.txt | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not needed because fetch_and_deploy function |
||
msg_ok "Setup ${APPLICATION}" | ||
|
||
# Creating Service (if needed) | ||
msg_info "Creating Service" | ||
cat <<EOF >/etc/systemd/system/otterwiki.service | ||
[Unit] | ||
Description=uWSGI server for An Otter Wiki | ||
|
||
[Service] | ||
User=root | ||
Environment=OTTERWIKI_SETTINGS=/opt/otterwiki/settings.cfg | ||
ExecStart=/opt/otterwiki/venv/bin/uwsgi --http :8080 --enable-threads --die-on-term -w otterwiki.server:app | ||
SyslogIdentifier=otterwiki | ||
|
||
[Install] | ||
WantedBy=multi-user.target | ||
EOF | ||
systemctl daemon-reload | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not needed |
||
systemctl enable -q --now otterwiki | ||
msg_ok "Created Service" | ||
|
||
motd_ssh | ||
customize | ||
|
||
# Cleanup | ||
msg_info "Cleaning up" | ||
rm -f "${RELEASE}".zip | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. not needed |
||
$STD apt-get -y autoremove | ||
$STD apt-get -y autoclean | ||
msg_ok "Cleaned" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove all comments in this file (expect line 1-6)