Compare commits

..

19 Commits

Author SHA1 Message Date
Slaviša Arežina
815494d258 Apply suggestion from @tremor021 2025-10-30 08:59:21 +01:00
Slaviša Arežina
c5b7884b95 Update documentation URL in reitti.json 2025-10-30 08:50:37 +01:00
CanbiZ
1aaffb68f6 Update reitti.json 2025-10-30 08:42:21 +01:00
push-app-to-main[bot]
b40af21ce6 'Add new script' 2025-10-30 07:37:32 +00:00
community-scripts-pr-app[bot]
0c4658394d Update CHANGELOG.md (#8733)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-30 00:13:13 +00:00
community-scripts-pr-app[bot]
ec7f6dd34d Update versions.json (#8732)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-30 01:12:49 +01:00
CanbiZ
5ff2bb4109 Fix typo for already updated 2025-10-29 22:10:07 +01:00
CanbiZ
de828aa565 typo 2025-10-29 14:00:50 -07:00
CanbiZ
4bf2846efa typo 2025-10-29 14:00:16 -07:00
CanbiZ
a04a2e1297 kimai switch to tarball 2025-10-29 13:44:04 -07:00
CanbiZ
28a6b688b9 kimai Switch to tarball 2025-10-29 13:43:32 -07:00
community-scripts-pr-app[bot]
0e4ef69d23 Update CHANGELOG.md (#8728)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 16:55:36 +00:00
CanbiZ
37403b554e Add Chromium and Node modules to ArchiveBox scripts (#8725) 2025-10-29 17:55:11 +01:00
community-scripts-pr-app[bot]
034c55b2a3 Update CHANGELOG.md (#8727)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 16:53:31 +00:00
CanbiZ
a1f8cb1bae Add workaround for libguestfs issue on Proxmox VE 9.0 (#8722) 2025-10-29 17:53:00 +01:00
CanbiZ
08ec932787 fix alpine gitea exit 2025-10-29 08:40:53 -07:00
CanbiZ
5a01dd2ec9 Add protobuf dependencies to installation script 2025-10-29 15:52:17 +01:00
community-scripts-pr-app[bot]
7aaaa9a71f Update CHANGELOG.md (#8723)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-10-29 14:44:38 +00:00
Tobias
cbc2ba1832 tracktor: refactor envfile (#8711)
* tracktor: refactor enfile

* tracktor: fix: update links

* tracktor: add: mechanic to update envfile
2025-10-29 15:44:10 +01:00
16 changed files with 456 additions and 129 deletions

View File

@@ -10,17 +10,25 @@
> [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-10-30
## 2025-10-29
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Docker-VM: add workaround for libguestfs issue on Proxmox VE 9+ [@MickLesk](https://github.com/MickLesk) ([#8722](https://github.com/community-scripts/ProxmoxVE/pull/8722))
- Dispatcharr: add folders in installer / add more build ressources [@MickLesk](https://github.com/MickLesk) ([#8708](https://github.com/community-scripts/ProxmoxVE/pull/8708))
- LibreTranslate: bump torch version [@MickLesk](https://github.com/MickLesk) ([#8710](https://github.com/community-scripts/ProxmoxVE/pull/8710))
- #### ✨ New Features
- Archivebox: add Chromium and Node modules [@MickLesk](https://github.com/MickLesk) ([#8725](https://github.com/community-scripts/ProxmoxVE/pull/8725))
- #### 🔧 Refactor
- tracktor: refactor envfile [@CrazyWolf13](https://github.com/CrazyWolf13) ([#8711](https://github.com/community-scripts/ProxmoxVE/pull/8711))
- Kimai / Ghost / ManageMyDamnLife: Switch to MariaDB [@MickLesk](https://github.com/MickLesk) ([#8712](https://github.com/community-scripts/ProxmoxVE/pull/8712))
## 2025-10-28

View File

@@ -32,6 +32,7 @@ function update_script() {
msg_info "Restarting Gitea"
rc-service gitea restart
msg_ok "Restarted Gitea"
exit
}
start

View File

@@ -28,12 +28,18 @@ function update_script() {
exit
fi
NODE_VERSION="22" setup_nodejs
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
msg_info "Stopping ArchiveBox"
if ! dpkg -l | grep -q "^ii chromium "; then
msg_info "Installing System Dependencies"
$STD apt-get install -y chromium
msg_ok "Installed System Dependencies"
fi
msg_info "Stopping Service"
systemctl stop archivebox
msg_ok "Stopped ArchiveBox"
msg_ok "Stopped Service"
msg_info "Upgrading Playwright"
$STD uv pip install playwright --system
@@ -46,11 +52,10 @@ function update_script() {
sudo -u archivebox archivebox init
msg_ok "Updated ArchiveBox"
msg_info "Starting ArchiveBox"
msg_info "Starting Service"
systemctl start archivebox
msg_ok "Started ArchiveBox"
msg_ok "Updated Successfully"
msg_ok "Started Service"
msg_ok "Updated Successfully!"
exit
}

6
ct/headers/reitti Normal file
View File

@@ -0,0 +1,6 @@
____ _ __ __ _
/ __ \___ (_) /_/ /_(_)
/ /_/ / _ \/ / __/ __/ /
/ _, _/ __/ / /_/ /_/ /
/_/ |_|\___/_/\__/\__/_/

View File

@@ -35,7 +35,7 @@ function update_script() {
msg_ok "Migrated PHP $CURRENT_PHP to 8.4"
fi
if check_for_gh_release "Kimai" "kimai/kimai"; then
if check_for_gh_release "kimai" "kimai/kimai"; then
BACKUP_DIR="/opt/kimai_backup"
msg_info "Stopping Apache2"
@@ -49,7 +49,7 @@ function update_script() {
[ -f /opt/kimai/config/packages/local.yaml ] && cp /opt/kimai/config/packages/local.yaml "$BACKUP_DIR/"
msg_ok "Backup completed"
fetch_and_deploy_gh_release "Kimai" "kimai/kimai" "prebuild" "latest" "/opt/kimai" "kimai-release-*.zip"
fetch_and_deploy_gh_release "kimai" "kimai/kimai"
msg_info "Updating Kimai"
[ -d "$BACKUP_DIR/var" ] && cp -r "$BACKUP_DIR/var" /opt/kimai/

68
ct/reitti.sh Normal file
View File

@@ -0,0 +1,68 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/dedicatedcode/reitti
APP="Reitti"
var_tags="${var_tags:-location-tracker}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-4096}"
var_disk="${var_disk:-15}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /opt/reitti/reitti.jar ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "reitti" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop reitti
msg_ok "Stopped Service"
rm -f /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
msg_info "Starting Service"
systemctl start reitti
msg_ok "Started Service"
msg_ok "Updated Successfully!"
fi
if check_for_gh_release "photon" "dedicatedcode/reitti"; then
msg_info "Stopping Service"
systemctl stop photon
msg_ok "Stopped Service"
rm -f /opt/photon/photon.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Starting Service"
systemctl start photon
msg_ok "Started Service"
msg_ok "Updated Successfully!"
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}"

View File

@@ -40,6 +40,29 @@ function update_script() {
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
systemctl daemon-reload
fi
if [ ! -d "/opt/tracktor-data/uploads" ]; then
mkdir -p /opt/tracktor-data/{uploads,logs}
EXISTING_AUTH_PIN=$(grep '^AUTH_PIN=' /opt/tracktor.env 2>/dev/null | cut -d'=' -f2)
AUTH_PIN=${EXISTING_AUTH_PIN:-123456}
cat <<EOF >/opt/tracktor.env
NODE_ENV=production
DB_PATH=/opt/tracktor-data/tracktor.db
UPLOADS_DIR="/opt/tracktor-data/uploads"
LOG_DIR="/opt/tracktor-data/logs"
# If server host is not set by default it will run on all interfaces - 0.0.0.0
# SERVER_HOST=""
SERVER_PORT=3000
# Set this if you want to secure your endpoints otherwise default will be "*"
CORS_ORIGINS="*"
# Set this if you are using backend and frontend separately.
# PUBLIC_API_BASE_URL=""
LOG_REQUESTS=true
LOG_LEVEL="info"
AUTH_PIN=${AUTH_PIN}
# PUBLIC_DEMO_MODE=false
# FORCE_DATA_SEED=false
EOF
fi
msg_ok "Corrected Services"
setup_nodejs

View File

@@ -0,0 +1,40 @@
{
"name": "Reitti",
"slug": "reitti",
"categories": [
21
],
"date_created": "2025-10-30",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 8080,
"documentation": "https://www.dedicatedcode.com/projects/reitti/",
"config_path": "/opt/reitti/.env",
"website": "https://www.dedicatedcode.com/projects/reitti/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/reitti.webp",
"description": "Reitti is a self-hosted location tracking and analysis platform that detects significant places, trip patterns, and integrates with OwnTracks, GPSLogger, and Immich. It uses PostgreSQL + PostGIS, RabbitMQ, Redis, and an optional Photon geocoder.",
"install_methods": [
{
"type": "default",
"script": "ct/reitti.sh",
"resources": {
"cpu": 2,
"ram": 4096,
"hdd": 15,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": "admin",
"password": "admin"
},
"notes": [
{
"text": "Photon Geocoder running at http://127.0.0.1:2322. Photon is fully setup, but without sample data. (filesize is big) -> checkout our guide: ´https://github.com/community-scripts/ProxmoxVE/discussions/8737´.",
"type": "info"
}
]
}

View File

@@ -9,9 +9,9 @@
"updateable": true,
"privileged": false,
"interface_port": 3000,
"documentation": "https://tracktor.bytedge.in/introduction.html",
"documentation": "https://github.com/javedh-dev/tracktor/tree/main/docs",
"config_path": "/opt/tracktor.env",
"website": "https://tracktor.bytedge.in/",
"website": "https://github.com/javedh-dev/tracktor",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
"description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
"install_methods": [

View File

@@ -1,13 +1,113 @@
[
{
"name": "BerriAI/litellm",
"version": "v1.77.7.dev3",
"date": "2025-10-29T23:40:01Z"
},
{
"name": "Sonarr/Sonarr",
"version": "v4.0.15.2941",
"date": "2025-06-20T17:20:54Z"
},
{
"name": "homebridge/homebridge",
"version": "v1.11.1",
"date": "2025-10-29T22:09:26Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.534",
"date": "2025-10-29T21:01:24Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.85",
"date": "2025-10-29T20:40:57Z"
},
{
"name": "influxdata/influxdb",
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "runtipi/runtipi",
"version": "e2e",
"date": "2025-10-29T19:37:29Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.2",
"date": "2025-10-07T08:11:58Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.7-rc1",
"date": "2025-10-29T18:03:43Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.3",
"date": "2025-10-29T17:58:16Z"
},
{
"name": "home-assistant/core",
"version": "2025.10.4",
"date": "2025-10-24T20:03:03Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.25.0",
"date": "2025-10-29T16:57:54Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.6.1",
"date": "2025-10-29T16:51:06Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.35",
"date": "2025-10-29T16:31:56Z"
},
{
"name": "azukaar/Cosmos-Server",
"version": "v0.18.4",
"date": "2025-04-05T19:12:57Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.4.4",
"date": "2025-09-25T13:19:26Z"
},
{
"name": "heiher/hev-socks5-server",
"version": "2.11.0",
"date": "2025-10-29T14:26:23Z"
},
{
"name": "mongodb/mongo",
"version": "r7.0.27-alpha0",
"date": "2025-10-29T13:54:18Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.1",
"date": "2025-10-29T10:15:50Z"
},
{
"name": "element-hq/synapse",
"version": "v1.141.0",
"date": "2025-10-29T11:45:43Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.6.1",
"date": "2025-10-29T10:15:50Z"
"name": "zabbix/zabbix",
"version": "7.4.4",
"date": "2025-10-29T11:31:26Z"
},
{
"name": "wazuh/wazuh",
"version": "coverity-w44-4.14.1",
"date": "2025-10-29T11:28:37Z"
},
{
"name": "cockpit-project/cockpit",
@@ -64,11 +164,6 @@
"version": "v1.0.1",
"date": "2025-10-29T03:25:13Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.6-rc1",
"date": "2025-10-16T16:36:25Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
@@ -79,16 +174,6 @@
"version": "v4.0.1",
"date": "2025-10-15T16:53:55Z"
},
{
"name": "runtipi/runtipi",
"version": "v4.5.5",
"date": "2025-10-28T21:53:07Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.34",
"date": "2025-10-28T21:08:11Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.90.4",
@@ -109,11 +194,6 @@
"version": "v4.4.5",
"date": "2025-10-28T18:35:47Z"
},
{
"name": "azukaar/Cosmos-Server",
"version": "v0.18.4",
"date": "2025-04-05T19:12:57Z"
},
{
"name": "keycloak/keycloak",
"version": "26.4.2",
@@ -121,8 +201,8 @@
},
{
"name": "javedh-dev/tracktor",
"version": "0.4.3",
"date": "2025-10-28T17:32:48Z"
"version": "0.4.4",
"date": "2025-10-28T17:39:14Z"
},
{
"name": "pi-hole/pi-hole",
@@ -169,21 +249,11 @@
"version": "v2.16.36",
"date": "2025-10-28T13:05:28Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.534",
"date": "2025-10-28T12:29:12Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.117.3",
"date": "2025-10-28T12:00:42Z"
},
{
"name": "zabbix/zabbix",
"version": "7.2.14",
"date": "2025-10-28T11:41:57Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.32.1",
@@ -199,11 +269,6 @@
"version": "v3.0.0-beta.2",
"date": "2025-10-28T10:16:29Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.84.2",
"date": "2025-10-22T17:03:48Z"
},
{
"name": "maxdorninger/MediaManager",
"version": "v1.8.1",
@@ -224,11 +289,6 @@
"version": "version/2025.10.0",
"date": "2025-10-27T19:58:39Z"
},
{
"name": "BerriAI/litellm",
"version": "v1.77.7.dev2",
"date": "2025-10-27T18:50:42Z"
},
{
"name": "rabbitmq/rabbitmq-server",
"version": "v4.2.0",
@@ -259,11 +319,6 @@
"version": "v2.0.10",
"date": "2025-09-24T08:33:37Z"
},
{
"name": "firefly-iii/firefly-iii",
"version": "v6.4.2",
"date": "2025-10-07T08:11:58Z"
},
{
"name": "jellyfin/jellyfin",
"version": "v10.11.1",
@@ -274,11 +329,6 @@
"version": "1.0.1",
"date": "2025-10-27T01:35:01Z"
},
{
"name": "mongodb/mongo",
"version": "r8.0.16-rc1",
"date": "2025-10-26T23:32:32Z"
},
{
"name": "Radarr/Radarr",
"version": "v5.28.0.10274",
@@ -334,26 +384,11 @@
"version": "v5.3",
"date": "2025-10-25T13:50:31Z"
},
{
"name": "go-gitea/gitea",
"version": "v1.24.7",
"date": "2025-10-25T01:23:46Z"
},
{
"name": "home-assistant/core",
"version": "2025.10.4",
"date": "2025-10-24T20:03:03Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.43.0",
"date": "2025-10-24T19:16:05Z"
},
{
"name": "influxdata/influxdb",
"version": "v2.7.12",
"date": "2025-05-29T17:08:26Z"
},
{
"name": "verdaccio/verdaccio",
"version": "v6.2.1",
@@ -409,16 +444,6 @@
"version": "v2.4.0",
"date": "2025-10-23T21:12:48Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.14.0",
"date": "2025-10-23T17:45:30Z"
},
{
"name": "paperless-ngx/paperless-ngx",
"version": "v2.19.2",
"date": "2025-10-23T17:23:27Z"
},
{
"name": "drakkan/sftpgo",
"version": "v2.7.0",
@@ -484,11 +509,6 @@
"version": "v12.2.1",
"date": "2025-10-21T14:40:19Z"
},
{
"name": "laurent22/joplin",
"version": "server-v3.4.4",
"date": "2025-09-25T13:19:26Z"
},
{
"name": "AlexxIT/go2rtc",
"version": "v1.9.11",
@@ -604,11 +624,6 @@
"version": "5.26.14",
"date": "2025-10-17T12:38:22Z"
},
{
"name": "zwave-js/zwave-js-ui",
"version": "v11.5.2",
"date": "2025-10-17T08:20:13Z"
},
{
"name": "diced/zipline",
"version": "v4.3.2",
@@ -989,11 +1004,6 @@
"version": "2.1.0-test1",
"date": "2025-09-17T18:21:45Z"
},
{
"name": "heiher/hev-socks5-server",
"version": "2.10.0",
"date": "2025-09-17T14:47:00Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.23.0",
@@ -1224,11 +1234,6 @@
"version": "v2.1.1",
"date": "2025-07-15T22:38:01Z"
},
{
"name": "homebridge/homebridge",
"version": "v1.11.0",
"date": "2025-07-13T19:22:47Z"
},
{
"name": "mayswind/AriaNg",
"version": "1.3.11",
@@ -1269,11 +1274,6 @@
"version": "v3.0.7",
"date": "2025-06-22T17:49:29Z"
},
{
"name": "Sonarr/Sonarr",
"version": "v4.0.15.2941",
"date": "2025-06-20T17:20:54Z"
},
{
"name": "prometheus-pve/prometheus-pve-exporter",
"version": "v3.5.5",

View File

@@ -22,7 +22,8 @@ $STD apt-get install -y \
libsasl2-dev \
procps \
dnsutils \
ripgrep
ripgrep \
chromium
msg_ok "Installed Dependencies"
msg_info "Installing Python Dependencies"
@@ -32,7 +33,7 @@ $STD apt-get install -y \
python3-regex
msg_ok "Installed Python Dependencies"
NODE_VERSION="22" setup_nodejs
NODE_VERSION="22" NODE_MODULE="@postlight/parser@latest,single-file-cli@latest" setup_nodejs
PYTHON_VERSION="3.13" setup_uv
msg_info "Installing Playwright"
@@ -40,7 +41,7 @@ $STD uv pip install playwright --system
$STD playwright install-deps chromium
msg_ok "Installed Playwright"
msg_info "Installing Chromium and ArchiveBox"
msg_info "Installing ArchiveBox"
mkdir -p /opt/archivebox/{data,.npm,.cache,.local}
$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox
chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local}
@@ -92,6 +93,7 @@ motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -41,7 +41,7 @@ $STD mariadb -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUS
} >>~/kimai.creds
msg_ok "Set up database"
fetch_and_deploy_gh_release "Kimai" "kimai/kimai" "prebuild" "latest" "/opt/kimai" "kimai-release-*.zip"
fetch_and_deploy_gh_release "kimai" "kimai/kimai"
msg_info "Installing Kimai"
cd /opt/kimai

View File

@@ -19,6 +19,8 @@ $STD apt install -y \
build-essential \
g++ \
cmake \
libprotobuf-dev \
protobuf-compiler \
libsentencepiece-dev \
libicu-dev
msg_ok "Installed dependencies"

164
install/reitti-install.sh Normal file
View File

@@ -0,0 +1,164 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: MickLesk (CanbiZ)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/dedicatedcode/reitti
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Dependencies"
$STD apt install -y \
redis-server \
rabbitmq-server \
libpq-dev \
zstd
msg_ok "Installed Dependencies"
JAVA_VERSION="24" setup_java
PG_VERSION="17" PG_MODULES="postgis" setup_postgresql
msg_info "Setting up PostgreSQL"
DB_NAME="reitti_db"
DB_USER="reitti"
DB_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC';"
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS postgis;"
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS postgis_topology;"
{
echo "Reitti Credentials"
echo "Database Name: $DB_NAME"
echo "Database User: $DB_USER"
echo "Database Password: $DB_PASS"
} >>~/reitti.creds
msg_ok "PostgreSQL Setup Completed"
msg_info "Configuring RabbitMQ"
RABBIT_USER="reitti"
RABBIT_PASS="$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)"
RABBIT_VHOST="/"
$STD rabbitmqctl add_user "$RABBIT_USER" "$RABBIT_PASS"
$STD rabbitmqctl add_vhost "$RABBIT_VHOST"
$STD rabbitmqctl set_permissions -p "$RABBIT_VHOST" "$RABBIT_USER" ".*" ".*" ".*"
$STD rabbitmqctl set_user_tags "$RABBIT_USER" administrator
{
echo ""
echo "Reitti Credentials"
echo "RabbitMQ User: $RABBIT_USER"
echo "RabbitMQ Password: $RABBIT_PASS"
} >>~/reitti.creds
msg_ok "Configured RabbitMQ"
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "reitti" "dedicatedcode/reitti" "singlefile" "latest" "/opt/reitti" "reitti-app.jar"
mv /opt/reitti/reitti-*.jar /opt/reitti/reitti.jar
USE_ORIGINAL_FILENAME="true" fetch_and_deploy_gh_release "photon" "komoot/photon" "singlefile" "latest" "/opt/photon" "photon-0*.jar"
mv /opt/photon/photon-*.jar /opt/photon/photon.jar
msg_info "Creating Reitti Configuration-File"
cat <<EOF >/opt/reitti/application.properties
# Reitti Server Base URI
reitti.server.advertise-uri=http://127.0.0.1:8080
# PostgreSQL Database Connection
spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/$DB_NAME
spring.datasource.username=$DB_USER
spring.datasource.password=$DB_PASS
spring.datasource.driver-class-name=org.postgresql.Driver
# Flyway Database Migrations
spring.flyway.enabled=true
spring.flyway.locations=classpath:db/migration
spring.flyway.baseline-on-migrate=true
# RabbitMQ (Message Queue)
spring.rabbitmq.host=127.0.0.1
spring.rabbitmq.port=5672
spring.rabbitmq.username=$RABBIT_USER
spring.rabbitmq.password=$RABBIT_PASS
# Redis (Cache)
spring.data.redis.host=127.0.0.1
spring.data.redis.port=6379
# Server Port
server.port=8080
# Optional: Logging & Performance
logging.level.root=INFO
spring.jpa.hibernate.ddl-auto=none
spring.datasource.hikari.maximum-pool-size=10
# OIDC / Security Settings
reitti.security.oidc.registration.enabled=false
# Photon (Geocoding)
PHOTON_BASE_URL=http://127.0.0.1:2322
PROCESSING_WAIT_TIME=15
PROCESSING_BATCH_SIZE=1000
PROCESSING_WORKERS_PER_QUEUE=4-16
# Disable potentially dangerous features unless needed
DANGEROUS_LIFE=false
EOF
msg_ok "Created Configuration-File for Reitti"
msg_info "Creating Services"
cat <<EOF >/etc/systemd/system/reitti.service
[Unit]
Description=Reitti
After=network.target postgresql.service redis-server.service rabbitmq-server.service photon.service
Wants=postgresql.service redis-server.service rabbitmq-server.service photon.service
[Service]
Type=simple
WorkingDirectory=/opt/reitti/
ExecStart=/usr/bin/java --enable-native-access=ALL-UNNAMED -jar -Xmx2g reitti.jar
TimeoutStopSec=20
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
cat <<'EOF' >/etc/systemd/system/photon.service
[Unit]
Description=Photon Geocoding Service (Germany, OpenSearch)
After=network.target
[Service]
Type=simple
WorkingDirectory=/opt/photon
ExecStart=/usr/bin/java -Xmx4g -jar photon.jar \
-data-dir /opt/photon \
-listen-port 2322 \
-listen-ip 0.0.0.0 \
-cors-any
Restart=on-failure
TimeoutStopSec=20
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now photon
systemctl enable -q --now reitti
msg_ok "Created Services"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

View File

@@ -20,18 +20,26 @@ msg_info "Configuring Tracktor"
cd /opt/tracktor
$STD npm install
$STD npm run build
mkdir /opt/tracktor-data
mkdir -p /opt/tracktor-data/{uploads,logs}
HOST_IP=$(hostname -I | awk '{print $1}')
cat <<EOF >/opt/tracktor.env
NODE_ENV=production
PUBLIC_DEMO_MODE=false
DB_PATH=/opt/tracktor-data/tracktor.db
# Replace this URL if using behind reverse proxy for https traffic. Though it is optional and should work without changing
PUBLIC_API_BASE_URL=http://$HOST_IP:3000
# Here add the reverse proxy url as well to avoid cross errors from the app.
CORS_ORIGINS=http://$HOST_IP:3000
UPLOADS_DIR="/opt/tracktor-data/uploads"
LOG_DIR="/opt/tracktor-data/logs"
# If server host is not set by default it will run on all interfaces - 0.0.0.0
# SERVER_HOST=""
SERVER_PORT=3000
PORT=3000
# Set this if you want to secure your endpoints otherwise default will be "*"
# CORS_ORIGINS="*"
# Set this if you are using backend and frontend separately. For lxc installation this is not needed
# PUBLIC_API_BASE_URL=""
LOG_REQUESTS=true
LOG_LEVEL="info"
AUTH_PIN=123456
# PUBLIC_DEMO_MODE=false
# FORCE_DATA_SEED=false
EOF
msg_ok "Configured Tracktor"

View File

@@ -905,7 +905,7 @@ check_for_gh_release() {
return 0
fi
msg_error "No update available: ${app} is not installed!"
msg_ok "Already up to date: ${app} (${current})"
return 1
fi