mirror of
https://github.com/nextcloud/all-in-one.git
synced 2026-05-21 19:00:33 +00:00
Compare commits
35 Commits
copilot/ad
...
alan/dev-s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a34327bd5a | ||
|
|
1a7feba6bd | ||
|
|
7a9bab5776 | ||
|
|
e45d34ab50 | ||
|
|
41c677abd9 | ||
|
|
dbf796aba3 | ||
|
|
a85641ceb9 | ||
|
|
39d3a73088 | ||
|
|
c7f0aa8a19 | ||
|
|
2eeada43b5 | ||
|
|
1bbda0a5ce | ||
|
|
af9e983b04 | ||
|
|
1d2149241d | ||
|
|
b9ec0f2ffe | ||
|
|
3586dbedb0 | ||
|
|
2a7c686247 | ||
|
|
f9e6339044 | ||
|
|
bb4790ed3a | ||
|
|
b21b5535f2 | ||
|
|
75e18bb40a | ||
|
|
4591d112c3 | ||
|
|
250f5cbe37 | ||
|
|
c0cabcf73f | ||
|
|
7deafec42d | ||
|
|
a79b3475c4 | ||
|
|
aa670af518 | ||
|
|
960fe801df | ||
|
|
80c7e90ab4 | ||
|
|
bc9817873c | ||
|
|
cfea3ef7e6 | ||
|
|
3838c49834 | ||
|
|
188f0f89a0 | ||
|
|
ee41f1814f | ||
|
|
74693303a3 | ||
|
|
387b39099f |
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# Docker CLI is a requirement
|
||||
FROM docker:29.3.0-cli AS docker
|
||||
FROM docker:29.3.1-cli AS docker
|
||||
|
||||
ARG CADDY_REMOTE_HOST_HASH=b21775afa730ffb52a24ddff310c8a6d1fd37276
|
||||
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
{
|
||||
admin off
|
||||
|
||||
# auto_https will be handled manually in acme.Caddyfile
|
||||
auto_https disable_redirects
|
||||
|
||||
storage file_system {
|
||||
root /mnt/docker-aio-config/caddy/
|
||||
root /mnt/docker-aio-config/caddy-internal/
|
||||
}
|
||||
|
||||
log {
|
||||
|
||||
@@ -364,6 +364,7 @@ fi
|
||||
mkdir -p /mnt/docker-aio-config/data/
|
||||
mkdir -p /mnt/docker-aio-config/session/
|
||||
mkdir -p /mnt/docker-aio-config/caddy/
|
||||
mkdir -p /mnt/docker-aio-config/caddy-internal/
|
||||
|
||||
# Adjust permissions for all instances
|
||||
chmod 770 -R /mnt/docker-aio-config
|
||||
@@ -371,6 +372,7 @@ chmod 777 /mnt/docker-aio-config
|
||||
chown www-data:www-data -R /mnt/docker-aio-config/data/
|
||||
chown www-data:www-data -R /mnt/docker-aio-config/session/
|
||||
chown www-data:www-data -R /mnt/docker-aio-config/caddy/
|
||||
chown www-data:www-data -R /mnt/docker-aio-config/caddy-internal/
|
||||
|
||||
print_green "Initial startup of Nextcloud All-in-One complete!
|
||||
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!
|
||||
|
||||
@@ -8,7 +8,7 @@ ENV SOURCE_LOCATION=/usr/src/nextcloud
|
||||
ENV REDIS_DB_INDEX=0
|
||||
|
||||
# AIO settings start # Do not remove or change this line!
|
||||
ENV NEXTCLOUD_VERSION=32.0.6
|
||||
ENV NEXTCLOUD_VERSION=32.0.8
|
||||
ENV AIO_TOKEN=123456
|
||||
ENV AIO_URL=localhost
|
||||
# AIO settings end # Do not remove or change this line!
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
# From https://github.com/redis/docker-library-redis/blob/release/8.2/alpine/Dockerfile
|
||||
FROM redis:8.6.1-alpine
|
||||
FROM redis:8.6.2-alpine
|
||||
|
||||
COPY --chmod=775 start.sh /start.sh
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# syntax=docker/dockerfile:latest
|
||||
FROM nats:2.12.5-scratch AS nats
|
||||
FROM nats:2.12.6-scratch AS nats
|
||||
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
|
||||
FROM strukturag/nextcloud-spreed-signaling:2.1.1 AS signaling
|
||||
FROM alpine:3.23.3 AS janus
|
||||
|
||||
@@ -1,460 +0,0 @@
|
||||
{
|
||||
"aio_services_v1": [
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-openmrs",
|
||||
"display_name": "Bahmni Lite",
|
||||
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/bahmni-lite",
|
||||
"image": "bahmni/openmrs",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "8080",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"OMRS_DB_NAME=openmrs",
|
||||
"OMRS_DB_HOSTNAME=nextcloud-aio-bahmni-openmrsdb",
|
||||
"OMRS_DB_USERNAME=openmrs-user",
|
||||
"OMRS_DB_PASSWORD=%BAHMNI_OPENMRS_DB_PASSWORD%",
|
||||
"OMRS_CREATE_TABLES=false",
|
||||
"OMRS_AUTO_UPDATE_DATABASE=true",
|
||||
"OMRS_MODULE_WEB_ADMIN=false",
|
||||
"OMRS_JAVA_SERVER_OPTS=",
|
||||
"OMRS_JAVA_MEMORY_OPTS=",
|
||||
"SEND_MAIL=false",
|
||||
"MAIL_TRANSPORT_PROTOCOL=smtps",
|
||||
"MAIL_SMTP_AUTH=true",
|
||||
"MAIL_SMTP_STARTTLS_ENABLE=true",
|
||||
"MAIL_SMTP_SSL_ENABLE=true",
|
||||
"MAIL_DEBUG=false",
|
||||
"MAIL_FROM=",
|
||||
"MAIL_USER=",
|
||||
"MAIL_PASSWORD=",
|
||||
"MAIL_SMTP_HOST=",
|
||||
"MAIL_SMTP_PORT=",
|
||||
"OMRS_DOCKER_ENV=true",
|
||||
"OMRS_C3P0_MAX_SIZE=50",
|
||||
"LUCENE_MATCH_TYPE=START",
|
||||
"DOCUMENT_MAX_SIZE_MB=7",
|
||||
"WEIGHT_CONCEPT_UUID=5089AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
|
||||
"HEIGHT_CONCEPT_UUID=5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
|
||||
],
|
||||
"secrets": [
|
||||
"BAHMNI_OPENMRS_DB_PASSWORD"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_config",
|
||||
"destination": "/etc/bahmni_config/",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_lab_results",
|
||||
"destination": "/home/bahmni/uploaded_results",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_uploaded_files",
|
||||
"destination": "/home/bahmni/uploaded-files",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_patient_images",
|
||||
"destination": "/home/bahmni/patient_images",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_document_images",
|
||||
"destination": "/home/bahmni/document_images",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_clinical_forms",
|
||||
"destination": "/home/bahmni/clinical_forms",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_configuration_checksums",
|
||||
"destination": "/openmrs/data/configuration_checksums",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_openmrs_logs",
|
||||
"destination": "/openmrs/data/logs",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_patient_images",
|
||||
"nextcloud_aio_bahmni_document_images",
|
||||
"nextcloud_aio_bahmni_clinical_forms",
|
||||
"nextcloud_aio_bahmni_lab_results",
|
||||
"nextcloud_aio_bahmni_uploaded_files",
|
||||
"nextcloud_aio_bahmni_configuration_checksums",
|
||||
"nextcloud_aio_bahmni_openmrs_logs"
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-openmrsdb",
|
||||
"nextcloud-aio-bahmni-config"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-openmrsdb",
|
||||
"image": "bahmni/openmrs-db",
|
||||
"image_tag": "1.0.0-lite-mysql5.6",
|
||||
"internal_port": "3306",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"MYSQL_ROOT_PASSWORD=%BAHMNI_MYSQL_ROOT_PASSWORD%",
|
||||
"MYSQL_DATABASE=openmrs",
|
||||
"MYSQL_USER=openmrs-user",
|
||||
"MYSQL_PASSWORD=%BAHMNI_OPENMRS_DB_PASSWORD%"
|
||||
],
|
||||
"secrets": [
|
||||
"BAHMNI_MYSQL_ROOT_PASSWORD",
|
||||
"BAHMNI_OPENMRS_DB_PASSWORD"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_openmrsdb",
|
||||
"destination": "/var/lib/mysql",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_configuration_checksums",
|
||||
"destination": "/configuration_checksums",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_openmrsdb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-config",
|
||||
"image": "bahmni/clinic-config",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_config",
|
||||
"destination": "/usr/local/bahmni_config",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_config"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-web",
|
||||
"image": "bahmni/bahmni-web",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_config",
|
||||
"destination": "/usr/local/apache2/htdocs/bahmni_config/",
|
||||
"writeable": false
|
||||
}
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-openmrs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-apps-frontend",
|
||||
"image": "bahmni/bahmni-apps-frontend",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-lab",
|
||||
"image": "bahmni/bahmni-lab",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-implementer-interface",
|
||||
"image": "bahmni/implementer-interface",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-openmrs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-reportsdb",
|
||||
"image": "mysql",
|
||||
"image_tag": "8.0",
|
||||
"internal_port": "3306",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"MYSQL_ROOT_PASSWORD=%BAHMNI_MYSQL_ROOT_PASSWORD%",
|
||||
"MYSQL_DATABASE=bahmni-reports",
|
||||
"MYSQL_USER=reports-user",
|
||||
"MYSQL_PASSWORD=%BAHMNI_REPORTS_DB_PASSWORD%"
|
||||
],
|
||||
"secrets": [
|
||||
"BAHMNI_MYSQL_ROOT_PASSWORD",
|
||||
"BAHMNI_REPORTS_DB_PASSWORD"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_reportsdb",
|
||||
"destination": "/var/lib/mysql",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_reportsdb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-reports",
|
||||
"image": "bahmni/reports",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "8080",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"OPENMRS_DB_HOST=nextcloud-aio-bahmni-openmrsdb",
|
||||
"OPENMRS_DB_NAME=openmrs",
|
||||
"OPENMRS_DB_USERNAME=openmrs-user",
|
||||
"OPENMRS_DB_PASSWORD=%BAHMNI_OPENMRS_DB_PASSWORD%",
|
||||
"OPENMRS_HOST=nextcloud-aio-bahmni-openmrs",
|
||||
"OPENMRS_PORT=8080",
|
||||
"REPORTS_DB_SERVER=nextcloud-aio-bahmni-reportsdb",
|
||||
"REPORTS_DB_NAME=bahmni-reports",
|
||||
"REPORTS_DB_USERNAME=reports-user",
|
||||
"REPORTS_DB_PASSWORD=%BAHMNI_REPORTS_DB_PASSWORD%"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_config",
|
||||
"destination": "/etc/bahmni_config/",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_queued_reports",
|
||||
"destination": "/home/bahmni/reports",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_queued_reports"
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-reportsdb",
|
||||
"nextcloud-aio-bahmni-openmrs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-patient-documents",
|
||||
"image": "bahmni/patient-documents",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"OPENMRS_HOST=nextcloud-aio-bahmni-openmrs"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_document_images",
|
||||
"destination": "/usr/share/nginx/html/document_images",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_lab_results",
|
||||
"destination": "/usr/share/nginx/html/uploaded_results",
|
||||
"writeable": true
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_uploaded_files",
|
||||
"destination": "/usr/share/nginx/html/uploaded-files",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-openmrs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-appointments",
|
||||
"image": "bahmni/appointments",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-craterdb",
|
||||
"image": "mysql",
|
||||
"image_tag": "8.0",
|
||||
"internal_port": "3306",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"MYSQL_ROOT_PASSWORD=%BAHMNI_MYSQL_ROOT_PASSWORD%",
|
||||
"MYSQL_DATABASE=crater",
|
||||
"MYSQL_USER=crater",
|
||||
"MYSQL_PASSWORD=%BAHMNI_CRATER_DB_PASSWORD%"
|
||||
],
|
||||
"secrets": [
|
||||
"BAHMNI_MYSQL_ROOT_PASSWORD",
|
||||
"BAHMNI_CRATER_DB_PASSWORD"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_craterdb",
|
||||
"destination": "/var/lib/mysql",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_craterdb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-crater-php",
|
||||
"image": "bahmni/crater-php",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "9000",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"APP_URL=http://nextcloud-aio-bahmni-crater-nginx",
|
||||
"DB_HOST=nextcloud-aio-bahmni-craterdb",
|
||||
"DB_PORT=3306",
|
||||
"DB_DATABASE=crater",
|
||||
"DB_USERNAME=crater",
|
||||
"DB_PASSWORD=%BAHMNI_CRATER_DB_PASSWORD%",
|
||||
"SANCTUM_STATEFUL_DOMAINS=nextcloud-aio-bahmni-crater-nginx",
|
||||
"SESSION_DOMAIN=nextcloud-aio-bahmni-crater-nginx",
|
||||
"AUTO_INSTALL=true",
|
||||
"ADMIN_NAME=Super Admin",
|
||||
"ADMIN_EMAIL=admin@bahmni.org",
|
||||
"ADMIN_PASSWORD=%BAHMNI_CRATER_ADMIN_PASSWORD%",
|
||||
"COMPANY_NAME=Bahmni",
|
||||
"COMPANY_SLUG=bahmni",
|
||||
"COUNTRY_ID=101",
|
||||
"CRATER_DEFAULT_CURRENCY=USD",
|
||||
"APP_DEBUG=false"
|
||||
],
|
||||
"secrets": [
|
||||
"BAHMNI_CRATER_ADMIN_PASSWORD"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_crater_app",
|
||||
"destination": "/var/www/storage/app/public",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_crater_app"
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-craterdb"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-crater-nginx",
|
||||
"image": "bahmni/crater-nginx",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "80",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_crater_app",
|
||||
"destination": "/var/www/public/storage",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-crater-php"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-crater-atomfeed-db",
|
||||
"image": "mysql",
|
||||
"image_tag": "8.0",
|
||||
"internal_port": "3306",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"MYSQL_ROOT_PASSWORD=%BAHMNI_MYSQL_ROOT_PASSWORD%",
|
||||
"MYSQL_DATABASE=crater-atomfeed",
|
||||
"MYSQL_USER=crater-atomfeed-user",
|
||||
"MYSQL_PASSWORD=%BAHMNI_CRATER_ATOMFEED_DB_PASSWORD%"
|
||||
],
|
||||
"secrets": [
|
||||
"BAHMNI_MYSQL_ROOT_PASSWORD",
|
||||
"BAHMNI_CRATER_ATOMFEED_DB_PASSWORD"
|
||||
],
|
||||
"volumes": [
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_crater_atomfeed_db",
|
||||
"destination": "/var/lib/mysql",
|
||||
"writeable": true
|
||||
}
|
||||
],
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_bahmni_crater_atomfeed_db"
|
||||
]
|
||||
},
|
||||
{
|
||||
"container_name": "nextcloud-aio-bahmni-crater-atomfeed",
|
||||
"image": "bahmni/crater-atomfeed",
|
||||
"image_tag": "latest",
|
||||
"internal_port": "8080",
|
||||
"restart": "unless-stopped",
|
||||
"environment": [
|
||||
"TZ=%TIMEZONE%",
|
||||
"OPENMRS_HOST=nextcloud-aio-bahmni-openmrs",
|
||||
"OPENMRS_PORT=8080",
|
||||
"OPENMRS_ATOMFEED_USER=admin",
|
||||
"OPENMRS_ATOMFEED_PASSWORD=Admin123",
|
||||
"CRATER_ATOMFEED_DB_HOST=nextcloud-aio-bahmni-crater-atomfeed-db",
|
||||
"CRATER_ATOMFEED_DB_PORT=3306",
|
||||
"CRATER_USERNAME=admin@bahmni.org",
|
||||
"CRATER_PASSWORD=%BAHMNI_CRATER_ADMIN_PASSWORD%",
|
||||
"CRATER_ATOMFEED_DB_USERNAME=crater-atomfeed-user",
|
||||
"CRATER_ATOMFEED_DB_PASSWORD=%BAHMNI_CRATER_ATOMFEED_DB_PASSWORD%",
|
||||
"CRATER_ATOMFEED_DB_NAME=crater-atomfeed",
|
||||
"CRATER_URL=http://nextcloud-aio-bahmni-crater-nginx"
|
||||
],
|
||||
"depends_on": [
|
||||
"nextcloud-aio-bahmni-openmrs",
|
||||
"nextcloud-aio-bahmni-crater-nginx",
|
||||
"nextcloud-aio-bahmni-crater-atomfeed-db"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,40 +0,0 @@
|
||||
## Bahmni Lite
|
||||
This container bundle sets up [Bahmni Lite](https://www.bahmni.org/), an open-source Electronic Medical Record (EMR) and hospital management system, and auto-configures it for you.
|
||||
|
||||
Bahmni Lite includes the following services:
|
||||
- **OpenMRS** – core EMR application
|
||||
- **OpenMRS Database** – pre-seeded MySQL database (Bahmni Lite schema)
|
||||
- **Bahmni Config** – clinic configuration (init container)
|
||||
- **Bahmni Web** – classic Bahmni EMR frontend (AngularJS)
|
||||
- **Bahmni Apps Frontend** – new React-based Bahmni frontend
|
||||
- **Bahmni Lab** – lab results module
|
||||
- **Implementer Interface** – form/concept builder
|
||||
- **Reports** + **Reports DB** – reporting service and its database
|
||||
- **Patient Documents** – document storage and serving
|
||||
- **Appointments** – appointments module
|
||||
- **Crater** (PHP + Nginx + DB) – billing/invoicing system
|
||||
- **Crater Atomfeed** + **Crater Atomfeed DB** – OpenMRS ↔ Crater sync service
|
||||
|
||||
### Notes
|
||||
- You need to configure a reverse proxy in order to use this container bundle, since Bahmni needs a dedicated (sub)domain! The easiest way is to install the [Caddy community container](https://github.com/nextcloud/all-in-one/tree/main/community-containers/caddy), which auto-configures `bahmni.your-nc-domain.com` for you — just point a CNAME record for `bahmni.your-nc-domain.com` at your server before enabling Caddy. Caddy will automatically route all Bahmni paths (`/openmrs/`, `/bahmni/`, `/bahmni-new/`, `/bahmni-lab/`, `/implementer-interface/`, `/document_images/`, `/uploaded_results/`, `/uploaded-files/`, `/appointments/`, `/reports/`) to the correct backend containers. Alternatively, you can follow https://github.com/nextcloud/all-in-one/blob/main/reverse-proxy.md and configure your own reverse proxy manually using the path-to-container mapping documented below.
|
||||
- The core Bahmni EMR is accessible at `/openmrs/` on the OpenMRS container (`nextcloud-aio-bahmni-openmrs`, port `8080`). After starting, visit `http://<your-domain>/openmrs/` and log in with the default credentials: username `admin`, password `Admin123`. **⚠️ Change the default OpenMRS admin password immediately after first login.** The Bahmni database image ships with this well-known default — leaving it in place is a serious security risk. Note: after changing the OpenMRS admin password, you must also update `OPENMRS_ATOMFEED_PASSWORD` in the `nextcloud-aio-bahmni-crater-atomfeed` container to match the new password, otherwise the Crater billing sync will stop working.
|
||||
- For the full Bahmni UI experience (Bahmni Web, Bahmni Apps Frontend etc.), a reverse proxy must be set up to route the following paths to the correct containers:
|
||||
- `/openmrs/` → `nextcloud-aio-bahmni-openmrs:8080`
|
||||
- `/bahmni/` → `nextcloud-aio-bahmni-web:80`
|
||||
- `/bahmni-new/` → `nextcloud-aio-bahmni-apps-frontend:80`
|
||||
- `/bahmni-lab/` → `nextcloud-aio-bahmni-lab:80`
|
||||
- `/implementer-interface/` → `nextcloud-aio-bahmni-implementer-interface:80`
|
||||
- `/document_images/`, `/uploaded_results/`, `/uploaded-files/` → `nextcloud-aio-bahmni-patient-documents:80`
|
||||
- `/appointments/` → `nextcloud-aio-bahmni-appointments:80`
|
||||
- `/reports/` → `nextcloud-aio-bahmni-reports:8080`
|
||||
- The Crater billing system can be reached at `nextcloud-aio-bahmni-crater-nginx:80`. The Crater admin email is `admin@bahmni.org` and the password is shown next to the container in the AIO interface.
|
||||
- All Bahmni data (patient images, documents, clinical forms, databases) will be automatically included in AIOs backup solution!
|
||||
- The [Fail2ban community container](https://github.com/nextcloud/all-in-one/tree/main/community-containers/fail2ban) auto-configures brute-force protection for Bahmni/OpenMRS login attempts when both containers are enabled.
|
||||
- This container bundle requires significant system resources. A minimum of **4 GB RAM** and **2 CPU cores** is recommended; **8 GB RAM** is preferred for production use.
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack.
|
||||
|
||||
### Repository
|
||||
https://github.com/Bahmni/bahmni-docker
|
||||
|
||||
### Maintainer
|
||||
https://github.com/Bahmni
|
||||
@@ -1,5 +1,5 @@
|
||||
## Caddy with geoblocking
|
||||
This container bundles caddy and auto-configures it for you. It also covers [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden) by listening on `bw.$NC_DOMAIN`, if installed. It also covers [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart) by listening on `mail.$NC_DOMAIN`, if installed. It also covers [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) by listening on `media.$NC_DOMAIN`, if installed. It also covers [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) by listening on `ldap.$NC_DOMAIN`, if installed. It also covers [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb) by listening on `tables.$NC_DOMAIN`, if installed. It also covers [seerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr) by listening on `requests.$NC_DOMAIN`, if installed. It also covers [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter) by listening on `metrics.$NC_DOMAIN`, if installed. It also covers [LocalAI](https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai) by listening on `ai.$NC_DOMAIN`, if installed. It also covers [Bahmni Lite](https://github.com/nextcloud/all-in-one/tree/main/community-containers/bahmni-lite) by listening on `bahmni.$NC_DOMAIN`, if installed.
|
||||
This container bundles caddy and auto-configures it for you. It also covers [vaultwarden](https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden) by listening on `bw.$NC_DOMAIN`, if installed. It also covers [stalwart](https://github.com/nextcloud/all-in-one/tree/main/community-containers/stalwart) by listening on `mail.$NC_DOMAIN`, if installed. It also covers [jellyfin](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin) by listening on `media.$NC_DOMAIN`, if installed. It also covers [lldap](https://github.com/nextcloud/all-in-one/tree/main/community-containers/lldap) by listening on `ldap.$NC_DOMAIN`, if installed. It also covers [nocodb](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nocodb) by listening on `tables.$NC_DOMAIN`, if installed. It also covers [seerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr) by listening on `requests.$NC_DOMAIN`, if installed. It also covers [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter) by listening on `metrics.$NC_DOMAIN`, if installed. It also covers [LocalAI](https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai) by listening on `ai.$NC_DOMAIN`, if installed.
|
||||
|
||||
### Notes
|
||||
- This container is incompatible with the [npmplus](https://github.com/nextcloud/all-in-one/tree/main/community-containers/npmplus) community container. So make sure that you do not enable both at the same time!
|
||||
@@ -15,7 +15,6 @@ This container bundles caddy and auto-configures it for you. It also covers [vau
|
||||
- If you want to use this with [seerr](https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr), make sure that you point `requests.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for seerr.
|
||||
- If you want to use this with [nextcloud-exporter](https://github.com/nextcloud/all-in-one/tree/main/community-containers/nextcloud-exporter), make sure that you point `metrics.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for nextcloud-exporter.
|
||||
- If you want to use this with [local AI](https://github.com/nextcloud/all-in-one/tree/main/community-containers/local-ai), make sure that you point `ai.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for local AI.
|
||||
- If you want to use this with [Bahmni Lite](https://github.com/nextcloud/all-in-one/tree/main/community-containers/bahmni-lite), make sure that you point `bahmni.your-nc-domain.com` to your server using a cname record so that caddy can get a certificate automatically for Bahmni Lite.
|
||||
- After the container was started the first time, you should see a new `nextcloud-aio-caddy` folder and inside there an `allowed-countries.txt` file when you open the files app with the default `admin` user. In there you can adjust the allowed country codes for caddy by adding them to the first line, e.g. `IT FR` would allow access from italy and france. Private ip-ranges are always allowed. Additionally, in order to activate this config, you need to get an account at https://dev.maxmind.com/geoip/geolite2-free-geolocation-data and download the `GeoLite2-Country.mmdb` and upload it with this exact name into the `nextcloud-aio-caddy` folder. Afterwards restart all containers from the AIO interface and your new config should be active!
|
||||
- You can add your own Caddy configurations in `/data/caddy-imports/` inside the Caddy container (`sudo docker exec -it nextcloud-aio-caddy bash`). These will be imported on container startup. **Please note:** If you do not have CLI access to the server, you can now run docker commands via a web session by using this community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/container-management
|
||||
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
|
||||
|
||||
@@ -35,11 +35,6 @@
|
||||
"source": "nextcloud_aio_jellyseerr",
|
||||
"destination": "/jellyseerr",
|
||||
"writeable": false
|
||||
},
|
||||
{
|
||||
"source": "nextcloud_aio_bahmni_openmrs_logs",
|
||||
"destination": "/bahmni-openmrs",
|
||||
"writeable": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
## Fail2ban
|
||||
This container bundles fail2ban and auto-configures it for you in order to block ip-addresses automatically. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin, https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr, and https://github.com/nextcloud/all-in-one/tree/main/community-containers/bahmni-lite, if installed.
|
||||
This container bundles fail2ban and auto-configures it for you in order to block ip-addresses automatically. It also covers https://github.com/nextcloud/all-in-one/tree/main/community-containers/vaultwarden, https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyfin, and https://github.com/nextcloud/all-in-one/tree/main/community-containers/jellyseerr, if installed.
|
||||
|
||||
### Notes
|
||||
- If you get an error like `"ip6tables v1.8.9 (legacy): can't initialize ip6tables table filter': Table does not exist (do you need to insmod?)"`, you need to enable ip6tables on your host via `sudo modprobe ip6table_filter`.
|
||||
|
||||
@@ -54,6 +54,9 @@
|
||||
"ui_secret": "SMBSERVER_PASSWORD",
|
||||
"backup_volumes": [
|
||||
"nextcloud_aio_smbserver"
|
||||
],
|
||||
"nextcloud_exec_commands": [
|
||||
"php /var/www/html/occ config:system:set filesystem_check_changes --value=1 --type=integer"
|
||||
]
|
||||
}
|
||||
]
|
||||
|
||||
@@ -9,7 +9,7 @@ You can run AIO with docker rootless by following the steps below.
|
||||
1. If you need ipv6 support, you should enable it by following https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md.
|
||||
1. Do not forget to set the mentioned environmental variables `PATH` and `DOCKER_HOST` and in best case add them to your `~/.bashrc` file as shown!
|
||||
1. Also do not forget to run `loginctl enable-linger USERNAME` (and substitute USERNAME with the correct one) in order to make sure that user services are automatically started after every reboot.
|
||||
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`). If you require the correct source IP you must expose them via `/etc/sysctl.conf`, [see note below](#note-regarding-docker-network-driver).
|
||||
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/tips/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`). If you require the correct source IP you must expose them via `/etc/sysctl.conf`, [see note below](#note-regarding-docker-network-driver).
|
||||
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `--env WATCHTOWER_DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly). When you are using Portainer to deploy AIO, the variable `$XDG_RUNTIME_DIR` is not available. In this case, it is necessary to manually add the path (e.g. `/run/user/1000/docker.sock`) to the Docker compose file to replace the `$XDG_RUNTIME_DIR` variable. If you are not sure how to get the path, you can run on the host: `echo $XDG_RUNTIME_DIR`.
|
||||
1. Now everything should work like without docker rootless. You can consider using docker-compose for this or running it behind a reverse proxy. Basically the only thing that needs to be adjusted always in the startup command or compose.yaml file (after installing docker rootles) are things that are mentioned in point 3.
|
||||
1. ⚠️ **Important:** Please read through all notes below!
|
||||
|
||||
36
php/composer.lock
generated
36
php/composer.lock
generated
@@ -4039,16 +4039,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/console",
|
||||
"version": "v6.4.35",
|
||||
"version": "v6.4.36",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/console.git",
|
||||
"reference": "49257c96304c508223815ee965c251e7c79e614e"
|
||||
"reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/49257c96304c508223815ee965c251e7c79e614e",
|
||||
"reference": "49257c96304c508223815ee965c251e7c79e614e",
|
||||
"url": "https://api.github.com/repos/symfony/console/zipball/9f481cfb580db8bcecc9b2d4c63f3e13df022ad5",
|
||||
"reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4113,7 +4113,7 @@
|
||||
"terminal"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.35"
|
||||
"source": "https://github.com/symfony/console/tree/v6.4.36"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -4133,20 +4133,20 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-03-06T13:31:08+00:00"
|
||||
"time": "2026-03-27T15:30:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/filesystem",
|
||||
"version": "v8.0.6",
|
||||
"version": "v8.0.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/filesystem.git",
|
||||
"reference": "7bf9162d7a0dff98d079b72948508fa48018a770"
|
||||
"reference": "66b769ae743ce2d13e435528fbef4af03d623e5a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7bf9162d7a0dff98d079b72948508fa48018a770",
|
||||
"reference": "7bf9162d7a0dff98d079b72948508fa48018a770",
|
||||
"url": "https://api.github.com/repos/symfony/filesystem/zipball/66b769ae743ce2d13e435528fbef4af03d623e5a",
|
||||
"reference": "66b769ae743ce2d13e435528fbef4af03d623e5a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4183,7 +4183,7 @@
|
||||
"description": "Provides basic utilities for the filesystem",
|
||||
"homepage": "https://symfony.com",
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/filesystem/tree/v8.0.6"
|
||||
"source": "https://github.com/symfony/filesystem/tree/v8.0.8"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -4203,7 +4203,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-25T16:59:43+00:00"
|
||||
"time": "2026-03-30T15:14:47+00:00"
|
||||
},
|
||||
{
|
||||
"name": "symfony/finder",
|
||||
@@ -4609,16 +4609,16 @@
|
||||
},
|
||||
{
|
||||
"name": "symfony/string",
|
||||
"version": "v7.4.6",
|
||||
"version": "v7.4.8",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/symfony/string.git",
|
||||
"reference": "9f209231affa85aa930a5e46e6eb03381424b30b"
|
||||
"reference": "114ac57257d75df748eda23dd003878080b8e688"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b",
|
||||
"reference": "9f209231affa85aa930a5e46e6eb03381424b30b",
|
||||
"url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688",
|
||||
"reference": "114ac57257d75df748eda23dd003878080b8e688",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@@ -4676,7 +4676,7 @@
|
||||
"utf8"
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/symfony/string/tree/v7.4.6"
|
||||
"source": "https://github.com/symfony/string/tree/v7.4.8"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
@@ -4696,7 +4696,7 @@
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2026-02-09T09:33:46+00:00"
|
||||
"time": "2026-03-24T13:12:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "vimeo/psalm",
|
||||
|
||||
@@ -216,7 +216,7 @@
|
||||
"properties": {
|
||||
"destination": {
|
||||
"type": "string",
|
||||
"pattern": "^((/[a-z0-9_/.-]+)|(%[A-Z_]+%))$"
|
||||
"pattern": "^((/[a-z_/.-]+)|(%[A-Z_]+%))$"
|
||||
},
|
||||
"source": {
|
||||
"type": "string",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
window.addEventListener("load", function(event) {
|
||||
if (document.hasFocus()) {
|
||||
// hide reload button if the site reloads automatically
|
||||
let list = document.getElementsByClassName("reload button");
|
||||
|
||||
@@ -121,10 +121,8 @@ document.addEventListener("DOMContentLoaded", function () {
|
||||
|
||||
function handleDockerSocketProxyWarning() {
|
||||
if (document.getElementById("docker-socket-proxy").checked) {
|
||||
// TODO: remove the line below and uncomment the lines further down once https://github.com/nextcloud/app_api/pull/800 is included
|
||||
alert('⚠️ Warning! Enabling this container comes with possible Security problems since you are exposing the docker socket and all its privileges to the Nextcloud container. Enable this only if you are sure what you are doing!');
|
||||
// alert('⚠️ The docker socket proxy container is deprecated. Please use the HaRP (High-availability Reverse Proxy for Nextcloud ExApps) instead!');
|
||||
// document.getElementById("docker-socket-proxy").checked = false
|
||||
alert('⚠️ The docker socket proxy container is deprecated. Please use the HaRP (High-availability Reverse Proxy for Nextcloud ExApps) instead!');
|
||||
document.getElementById("docker-socket-proxy").checked = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +96,7 @@ class LogViewer {
|
||||
}
|
||||
|
||||
scrollToBottom() {
|
||||
window.scrollTo(0, document.body.scrollHeight);
|
||||
this.logElem.scrollTop = this.logElem.scrollHeight;
|
||||
}
|
||||
|
||||
initAutoloadingControls() {
|
||||
|
||||
@@ -26,6 +26,7 @@ readonly class AuthManager {
|
||||
public function SetAuthState(bool $isLoggedIn) : void {
|
||||
|
||||
if (!$this->IsAuthenticated() && $isLoggedIn === true) {
|
||||
session_regenerate_id(true);
|
||||
$date = new DateTime();
|
||||
$dateTime = $date->getTimestamp();
|
||||
$_SESSION['date_time'] = $dateTime;
|
||||
|
||||
@@ -657,7 +657,7 @@ class ConfigurationManager
|
||||
throw new InvalidSettingConfigurationException("Please enter your current password.");
|
||||
}
|
||||
|
||||
if ($currentPassword !== $this->password) {
|
||||
if (!hash_equals($this->password, $currentPassword)) {
|
||||
throw new InvalidSettingConfigurationException("The entered current password is not correct.");
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<script type="text/javascript" src="timezone.js"></script>
|
||||
|
||||
{# js for optional containers and additional containers forms #}
|
||||
<script type="text/javascript" src="containers-form-submit.js?v6"></script>
|
||||
<script type="text/javascript" src="containers-form-submit.js?v7"></script>
|
||||
|
||||
{% set hasBackupLocation = borg_backup_host_location or borg_remote_repo %}
|
||||
{% set isAnyRunning = false %}
|
||||
@@ -635,7 +635,7 @@
|
||||
{% endif %}
|
||||
|
||||
{% if isApacheStarting == true or is_backup_container_running == true or isWatchtowerRunning == true or is_daily_backup_running == true %}
|
||||
<script type="text/javascript" src="automatic_reload.js"></script>
|
||||
<script type="text/javascript" src="automatic_reload.js?v1"></script>
|
||||
{% else %}
|
||||
<script type="text/javascript" src="before-unload.js"></script>
|
||||
{% endif %}
|
||||
|
||||
@@ -1 +1 @@
|
||||
12.9.0
|
||||
12.9.1
|
||||
|
||||
@@ -198,7 +198,6 @@
|
||||
>
|
||||
<label for="docker-socket-proxy">Docker Socket Proxy (needed for <a target="_blank" href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>) ⚠️ The docker socket proxy container is deprecated. Please use the HaRP (High-availability Reverse Proxy for Nextcloud ExApps) instead!</label>
|
||||
</p>
|
||||
{#
|
||||
<p>
|
||||
<input
|
||||
type="checkbox"
|
||||
@@ -213,7 +212,6 @@
|
||||
>
|
||||
<label for="harp">HaRP (<a target="_blank" href="https://github.com/nextcloud/HaRP">High-availability Reverse Proxy</a> for Nextcloud ExApps)</label>
|
||||
</p>
|
||||
#}
|
||||
<p>
|
||||
<input
|
||||
type="checkbox"
|
||||
|
||||
@@ -3,15 +3,25 @@
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<style>
|
||||
body {
|
||||
html, body {
|
||||
height: 100%;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
}
|
||||
pre {
|
||||
height: 100%;
|
||||
overflow: auto;
|
||||
margin: 0;
|
||||
padding: 1rem;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
#floating-box {
|
||||
position: sticky;
|
||||
position: fixed;
|
||||
top: 1rem;
|
||||
float: right;
|
||||
right: 1rem;
|
||||
width: 20rem;
|
||||
max-width: calc(100vw - 2rem);
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
justify-content: end;
|
||||
align-items: center;
|
||||
@@ -43,7 +53,7 @@
|
||||
transition: opacity 1s, display 1s allow-discrete;
|
||||
}
|
||||
</style>
|
||||
<script src="log-view.js"></script>
|
||||
<script src="log-view.js?v1"></script>
|
||||
</head>
|
||||
<body data-container-id="{{ id }}">
|
||||
<div id="floating-box">
|
||||
|
||||
@@ -151,7 +151,7 @@ sudo docker run \
|
||||
- `--sig-proxy=false` — prevents Ctrl+C in the attached terminal from stopping the container.
|
||||
- `--name nextcloud-aio-mastercontainer` — the container name. Do not change this name; mastercontainer updates rely on it.
|
||||
- `--restart always` — ensures the container restarts automatically with the Docker daemon.
|
||||
- `--publish 80:80` — publishes container port 80 on host port 80 (used for ACME http-challenge when obtaining certificates). Not required if you run AIO behind a reverse proxy.
|
||||
- `--publish 80:80` — publishes container port 80 on host port 80 (used for ACME http-challenge when obtaining certificates, used for for the AIO-interface running inside the mastercontainer). Not required if you run AIO behind a reverse proxy.
|
||||
- `--publish 8080:8080` — publishes the AIO interface (self-signed certificate) on host port 8080. You may map a different host port if 8080 is in use (e.g. `--publish 8081:8080`).
|
||||
- `--publish 8443:8443` — publishes the AIO interface with a valid certificate on host port 8443 (requires ports 80 and 8443 to be reachable and a domain pointing to your server). Not required if you run AIO behind a reverse proxy.
|
||||
- `--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config` — stores mastercontainer configuration in the named Docker volume. Do not change this volume name; built-in backups depend on it.
|
||||
|
||||
47
scripts/build-containers.sh
Executable file
47
scripts/build-containers.sh
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/bin/bash
|
||||
|
||||
VARIANT="develop"
|
||||
CONTAINERS=()
|
||||
|
||||
# Parse flags first
|
||||
while [[ $# -gt 0 && $1 == --* ]]; do
|
||||
case $1 in
|
||||
--variant)
|
||||
VARIANT="$2"
|
||||
shift 2
|
||||
;;
|
||||
*)
|
||||
echo "Unknown option: $1"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Remaining arguments are containers
|
||||
CONTAINERS=("$@")
|
||||
|
||||
if [ ${#CONTAINERS[@]} -eq 0 ]; then
|
||||
echo "Usage: $0 [--variant develop|beta] <container1> [container2] [container3] ..."
|
||||
echo "Example: $0 --variant beta apache mastercontainer"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Change to project root
|
||||
cd "$(dirname "$0")/.." || exit 1
|
||||
|
||||
for container in "${CONTAINERS[@]}"; do
|
||||
if [[ $container == "mastercontainer" ]]; then
|
||||
TAG="all-in-one"
|
||||
else
|
||||
TAG="aio-$container"
|
||||
fi
|
||||
|
||||
if [[ $container == "mastercontainer" || $container == "nextcloud" ]]; then
|
||||
CONTEXT="."
|
||||
else
|
||||
CONTEXT="Containers/$container"
|
||||
fi
|
||||
|
||||
docker buildx build --file Containers/$container/Dockerfile --tag ghcr.io/nextcloud-releases/"$TAG":"$VARIANT" --load $CONTEXT
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user