cloudron 8.0.1 → 8.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/bin/cloudron +7 -1
  2. package/package.json +1 -1
  3. package/src/actions.js +104 -34
  4. package/src/templates/flask/CloudronManifest.json +25 -0
  5. package/src/templates/flask/Dockerfile +16 -0
  6. package/src/templates/flask/app/__init__.py +5 -0
  7. package/src/templates/flask/app/views.py +5 -0
  8. package/src/templates/flask/dockerignore +5 -0
  9. package/src/templates/flask/requirements.txt +1 -0
  10. package/src/templates/flask/run.py +4 -0
  11. package/src/templates/flask/start.sh +8 -0
  12. package/src/templates/flask/supervisor/uwsgi.conf +12 -0
  13. package/src/templates/flask/template.json +3 -0
  14. package/src/templates/flask/uwsgi.ini +6 -0
  15. package/src/templates/lamp/CloudronManifest.json +26 -0
  16. package/src/templates/lamp/Dockerfile +27 -0
  17. package/src/templates/lamp/apache/app.conf +17 -0
  18. package/src/templates/lamp/apache/mpm_prefork.conf +7 -0
  19. package/src/templates/lamp/dockerignore +4 -0
  20. package/src/templates/lamp/index.php +18 -0
  21. package/src/templates/lamp/start.sh +9 -0
  22. package/src/templates/lamp/template.json +3 -0
  23. package/src/templates/lamp-composer/CloudronManifest.json +26 -0
  24. package/src/templates/lamp-composer/Dockerfile +30 -0
  25. package/src/templates/lamp-composer/apache/app.conf +17 -0
  26. package/src/templates/lamp-composer/apache/mpm_prefork.conf +7 -0
  27. package/src/templates/lamp-composer/composer.json +8 -0
  28. package/src/templates/lamp-composer/dockerignore +5 -0
  29. package/src/templates/lamp-composer/public/index.php +20 -0
  30. package/src/templates/lamp-composer/start.sh +9 -0
  31. package/src/templates/lamp-composer/template.json +3 -0
  32. package/src/templates/lemp/CloudronManifest.json +26 -0
  33. package/src/templates/lemp/Dockerfile +27 -0
  34. package/src/templates/lemp/dockerignore +4 -0
  35. package/src/templates/lemp/index.php +18 -0
  36. package/src/templates/lemp/nginx/app.conf +22 -0
  37. package/src/templates/lemp/start.sh +11 -0
  38. package/src/templates/lemp/template.json +3 -0
  39. package/src/templates/nextjs/CloudronManifest.json +25 -0
  40. package/src/templates/nextjs/Dockerfile +14 -0
  41. package/src/templates/nextjs/app/layout.js +12 -0
  42. package/src/templates/nextjs/app/page.js +7 -0
  43. package/src/templates/nextjs/dockerignore +5 -0
  44. package/src/templates/nextjs/next.config.mjs +6 -0
  45. package/src/templates/nextjs/package.json +15 -0
  46. package/src/templates/nextjs/start.sh +9 -0
  47. package/src/templates/nextjs/template.json +3 -0
  48. package/src/templates/nodejs/CloudronManifest.json +25 -0
  49. package/src/templates/nodejs/Dockerfile +10 -0
  50. package/src/templates/nodejs/dockerignore +4 -0
  51. package/src/templates/nodejs/package.json +11 -0
  52. package/src/templates/nodejs/server.js +12 -0
  53. package/src/templates/nodejs/start.sh +9 -0
  54. package/src/templates/nodejs/template.json +3 -0
  55. package/src/templates/nodejs-mongodb/CloudronManifest.json +26 -0
  56. package/src/templates/nodejs-mongodb/Dockerfile +10 -0
  57. package/src/templates/nodejs-mongodb/dockerignore +4 -0
  58. package/src/templates/nodejs-mongodb/package.json +14 -0
  59. package/src/templates/nodejs-mongodb/server.js +24 -0
  60. package/src/templates/nodejs-mongodb/start.sh +9 -0
  61. package/src/templates/nodejs-mongodb/template.json +3 -0
  62. package/src/templates/rails/CloudronManifest.json +26 -0
  63. package/src/templates/rails/Dockerfile +16 -0
  64. package/src/templates/rails/Gemfile +5 -0
  65. package/src/templates/rails/config/database.yml +4 -0
  66. package/src/templates/rails/config/puma.rb +9 -0
  67. package/src/templates/rails/dockerignore +7 -0
  68. package/src/templates/rails/public/index.html +12 -0
  69. package/src/templates/rails/start.sh +14 -0
  70. package/src/templates/rails/supervisor/puma.conf +12 -0
  71. package/src/templates/rails/template.json +3 -0
  72. package/src/templates/static/CloudronManifest.json +25 -0
  73. package/src/templates/static/Dockerfile +17 -0
  74. package/src/templates/static/apache/app.conf +13 -0
  75. package/src/templates/static/apache/mpm_prefork.conf +7 -0
  76. package/src/templates/static/dockerignore +3 -0
  77. package/src/templates/static/public/index.html +11 -0
  78. package/src/templates/static/start.sh +7 -0
  79. package/src/templates/static/template.json +3 -0
  80. package/test/test.js +1 -1
  81. /package/src/templates/{CloudronManifest.appstore.json.ejs → default/CloudronManifest.json.ejs} +0 -0
  82. /package/src/templates/{CloudronManifest.json.ejs → default/CloudronManifest.minimal.json.ejs} +0 -0
  83. /package/src/templates/{Dockerfile.ejs → default/Dockerfile.ejs} +0 -0
  84. /package/src/templates/{dockerignore.ejs → default/dockerignore.ejs} +0 -0
  85. /package/src/templates/{start.sh.ejs → default/start.sh.ejs} +0 -0
@@ -0,0 +1,27 @@
1
+ FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
2
+
3
+ RUN mkdir -p /app/code
4
+ WORKDIR /app/code
5
+
6
+ COPY nginx/app.conf /etc/nginx/sites-available/app
7
+ RUN rm -f /etc/nginx/sites-enabled/* && \
8
+ ln -s /etc/nginx/sites-available/app /etc/nginx/sites-enabled/app
9
+
10
+ RUN crudini --set /etc/php/8.3/fpm/php.ini PHP upload_max_filesize 256M && \
11
+ crudini --set /etc/php/8.3/fpm/php.ini PHP post_max_size 256M && \
12
+ crudini --set /etc/php/8.3/fpm/php.ini PHP memory_limit 256M && \
13
+ crudini --set /etc/php/8.3/fpm/php.ini PHP max_execution_time 200 && \
14
+ crudini --set /etc/php/8.3/fpm/php.ini Session session.save_path /run/app/sessions && \
15
+ crudini --set /etc/php/8.3/fpm/php.ini Session session.gc_probability 1 && \
16
+ crudini --set /etc/php/8.3/fpm/php.ini Session session.gc_divisor 100
17
+
18
+ RUN crudini --set /etc/php/8.3/fpm/pool.d/www.conf www user cloudron && \
19
+ crudini --set /etc/php/8.3/fpm/pool.d/www.conf www group cloudron && \
20
+ crudini --set /etc/php/8.3/fpm/pool.d/www.conf www listen /run/php-fpm.sock && \
21
+ crudini --set /etc/php/8.3/fpm/pool.d/www.conf www listen.owner cloudron && \
22
+ crudini --set /etc/php/8.3/fpm/pool.d/www.conf www listen.group cloudron
23
+
24
+ COPY index.php start.sh /app/code/
25
+ RUN chown -R cloudron:cloudron /app/code
26
+
27
+ CMD [ "/app/code/start.sh" ]
@@ -0,0 +1,4 @@
1
+ .git
2
+ .gitignore
3
+ .dockerignore
4
+ node_modules
@@ -0,0 +1,18 @@
1
+ <?php
2
+ $host = getenv("CLOUDRON_MYSQL_HOST");
3
+ $port = getenv("CLOUDRON_MYSQL_PORT");
4
+ $username = getenv("CLOUDRON_MYSQL_USERNAME");
5
+ $password = getenv("CLOUDRON_MYSQL_PASSWORD");
6
+ $database = getenv("CLOUDRON_MYSQL_DATABASE");
7
+
8
+ echo "<h1>Hello from Cloudron!</h1>\n";
9
+
10
+ try {
11
+ $dsn = "mysql:host=$host;port=$port;dbname=$database";
12
+ $pdo = new PDO($dsn, $username, $password);
13
+ $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
14
+ echo "<p>MySQL connection successful.</p>\n";
15
+ } catch (PDOException $e) {
16
+ echo "<p>MySQL connection failed: " . htmlspecialchars($e->getMessage()) . "</p>\n";
17
+ }
18
+ ?>
@@ -0,0 +1,22 @@
1
+ server {
2
+ listen 3000;
3
+
4
+ root /app/code;
5
+ index index.php index.html;
6
+
7
+ client_max_body_size 256M;
8
+
9
+ location / {
10
+ try_files $uri $uri/ /index.php?$query_string;
11
+ }
12
+
13
+ location ~ \.php$ {
14
+ include snippets/fastcgi-php.conf;
15
+ fastcgi_pass unix:/run/php-fpm.sock;
16
+ fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
17
+ }
18
+
19
+ location ~ /\. {
20
+ deny all;
21
+ }
22
+ }
@@ -0,0 +1,11 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+
5
+ mkdir -p /run/app/sessions
6
+ chown -R cloudron:cloudron /run/app
7
+
8
+ php-fpm8.3 --nodaemonize --fpm-config /etc/php/8.3/fpm/php-fpm.conf &
9
+
10
+ echo "Starting Nginx"
11
+ exec nginx -g 'daemon off;'
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "LEMP app with Nginx, PHP-FPM, and MySQL"
3
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "id": "",
3
+ "version": "0.1.0",
4
+ "upstreamVersion": "",
5
+ "minBoxVersion": "9.0.0",
6
+ "title": "",
7
+ "author": "",
8
+ "description": "file://DESCRIPTION.md",
9
+ "tagline": "",
10
+ "website": "",
11
+ "contactEmail": "",
12
+ "iconUrl": "file://logo.png",
13
+ "healthCheckPath": "/",
14
+ "mediaLinks": [],
15
+ "httpPort": 3000,
16
+ "tags": [],
17
+ "changelog": "file://CHANGELOG",
18
+ "postInstallMessage": "file://POSTINSTALL.md",
19
+ "documentationUrl": "",
20
+ "forumUrl": "",
21
+ "addons": {
22
+ "localstorage": {}
23
+ },
24
+ "manifestVersion": 2
25
+ }
@@ -0,0 +1,14 @@
1
+ FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
2
+
3
+ RUN mkdir -p /app/code
4
+ WORKDIR /app/code
5
+
6
+ COPY package.json package-lock.json* /app/code/
7
+
8
+ RUN npm install
9
+
10
+ COPY . /app/code/
11
+
12
+ RUN npm run build
13
+
14
+ CMD [ "/app/code/start.sh" ]
@@ -0,0 +1,12 @@
1
+ export const metadata = {
2
+ title: 'Cloudron App',
3
+ description: 'A Next.js app on Cloudron',
4
+ };
5
+
6
+ export default function RootLayout({ children }) {
7
+ return (
8
+ <html lang="en">
9
+ <body>{children}</body>
10
+ </html>
11
+ );
12
+ }
@@ -0,0 +1,7 @@
1
+ export default function Home() {
2
+ return (
3
+ <main>
4
+ <h1>Hello from Cloudron!</h1>
5
+ </main>
6
+ );
7
+ }
@@ -0,0 +1,5 @@
1
+ .git
2
+ .gitignore
3
+ .dockerignore
4
+ node_modules
5
+ .next
@@ -0,0 +1,6 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {
3
+ output: 'standalone',
4
+ };
5
+
6
+ export default nextConfig;
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "app",
3
+ "version": "1.0.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev",
7
+ "build": "next build",
8
+ "start": "next start"
9
+ },
10
+ "dependencies": {
11
+ "next": "^15.0.0",
12
+ "react": "^19.0.0",
13
+ "react-dom": "^19.0.0"
14
+ }
15
+ }
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+
5
+ chown -R cloudron:cloudron /app/data
6
+
7
+ echo "Starting Next.js app"
8
+
9
+ exec /usr/local/bin/gosu cloudron:cloudron node /app/code/.next/standalone/server.js
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Next.js app with standalone build"
3
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "id": "",
3
+ "version": "0.1.0",
4
+ "upstreamVersion": "",
5
+ "minBoxVersion": "9.0.0",
6
+ "title": "",
7
+ "author": "",
8
+ "description": "file://DESCRIPTION.md",
9
+ "tagline": "",
10
+ "website": "",
11
+ "contactEmail": "",
12
+ "iconUrl": "file://logo.png",
13
+ "healthCheckPath": "/",
14
+ "mediaLinks": [],
15
+ "httpPort": 3000,
16
+ "tags": [],
17
+ "changelog": "file://CHANGELOG",
18
+ "postInstallMessage": "file://POSTINSTALL.md",
19
+ "documentationUrl": "",
20
+ "forumUrl": "",
21
+ "addons": {
22
+ "localstorage": {}
23
+ },
24
+ "manifestVersion": 2
25
+ }
@@ -0,0 +1,10 @@
1
+ FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
2
+
3
+ RUN mkdir -p /app/code
4
+ WORKDIR /app/code
5
+
6
+ COPY package.json server.js start.sh /app/code/
7
+
8
+ RUN npm install
9
+
10
+ CMD [ "/app/code/start.sh" ]
@@ -0,0 +1,4 @@
1
+ .git
2
+ .gitignore
3
+ .dockerignore
4
+ node_modules
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "app",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "server.js",
6
+ "scripts": {
7
+ "start": "node server.js"
8
+ },
9
+ "author": "",
10
+ "license": "ISC"
11
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ var http = require("http");
4
+
5
+ var server = http.createServer(function (request, response) {
6
+ response.writeHead(200, {"Content-Type": "text/plain"});
7
+ response.end("Hello World\n");
8
+ });
9
+
10
+ server.listen(3000);
11
+
12
+ console.log("Server running at port 3000");
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+
5
+ chown -R cloudron:cloudron /app/data
6
+
7
+ echo "Starting Node.js app"
8
+
9
+ exec /usr/local/bin/gosu cloudron:cloudron node /app/code/server.js
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Node.js app with gosu and start.sh"
3
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "id": "",
3
+ "version": "0.1.0",
4
+ "upstreamVersion": "",
5
+ "minBoxVersion": "9.0.0",
6
+ "title": "",
7
+ "author": "",
8
+ "description": "file://DESCRIPTION.md",
9
+ "tagline": "",
10
+ "website": "",
11
+ "contactEmail": "",
12
+ "iconUrl": "file://logo.png",
13
+ "healthCheckPath": "/",
14
+ "mediaLinks": [],
15
+ "httpPort": 3000,
16
+ "tags": [],
17
+ "changelog": "file://CHANGELOG",
18
+ "postInstallMessage": "file://POSTINSTALL.md",
19
+ "documentationUrl": "",
20
+ "forumUrl": "",
21
+ "addons": {
22
+ "localstorage": {},
23
+ "mongodb": {}
24
+ },
25
+ "manifestVersion": 2
26
+ }
@@ -0,0 +1,10 @@
1
+ FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
2
+
3
+ RUN mkdir -p /app/code
4
+ WORKDIR /app/code
5
+
6
+ COPY package.json server.js start.sh /app/code/
7
+
8
+ RUN npm install
9
+
10
+ CMD [ "/app/code/start.sh" ]
@@ -0,0 +1,4 @@
1
+ .git
2
+ .gitignore
3
+ .dockerignore
4
+ node_modules
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "app",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "server.js",
6
+ "scripts": {
7
+ "start": "node server.js"
8
+ },
9
+ "dependencies": {
10
+ "mongodb": "^6.0.0"
11
+ },
12
+ "author": "",
13
+ "license": "ISC"
14
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var http = require("http");
4
+ var { MongoClient } = require("mongodb");
5
+
6
+ var mongoUrl = process.env.CLOUDRON_MONGODB_URL;
7
+
8
+ var server = http.createServer(async function (request, response) {
9
+ response.writeHead(200, { "Content-Type": "text/plain" });
10
+
11
+ try {
12
+ var client = await MongoClient.connect(mongoUrl);
13
+ var db = client.db();
14
+ var result = await db.command({ ping: 1 });
15
+ client.close();
16
+ response.end("Hello World\nMongoDB connection successful: " + JSON.stringify(result) + "\n");
17
+ } catch (e) {
18
+ response.end("Hello World\nMongoDB connection failed: " + e.message + "\n");
19
+ }
20
+ });
21
+
22
+ server.listen(3000);
23
+
24
+ console.log("Server running at port 3000");
@@ -0,0 +1,9 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+
5
+ chown -R cloudron:cloudron /app/data
6
+
7
+ echo "Starting Node.js app"
8
+
9
+ exec /usr/local/bin/gosu cloudron:cloudron node /app/code/server.js
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Node.js app with MongoDB"
3
+ }
@@ -0,0 +1,26 @@
1
+ {
2
+ "id": "",
3
+ "version": "0.1.0",
4
+ "upstreamVersion": "",
5
+ "minBoxVersion": "9.0.0",
6
+ "title": "",
7
+ "author": "",
8
+ "description": "file://DESCRIPTION.md",
9
+ "tagline": "",
10
+ "website": "",
11
+ "contactEmail": "",
12
+ "iconUrl": "file://logo.png",
13
+ "healthCheckPath": "/",
14
+ "mediaLinks": [],
15
+ "httpPort": 3000,
16
+ "tags": [],
17
+ "changelog": "file://CHANGELOG",
18
+ "postInstallMessage": "file://POSTINSTALL.md",
19
+ "documentationUrl": "",
20
+ "forumUrl": "",
21
+ "addons": {
22
+ "localstorage": {},
23
+ "postgresql": {}
24
+ },
25
+ "manifestVersion": 2
26
+ }
@@ -0,0 +1,16 @@
1
+ FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
2
+
3
+ RUN mkdir -p /app/code
4
+ WORKDIR /app/code
5
+
6
+ COPY Gemfile Gemfile.lock* /app/code/
7
+ RUN bundle install --without development test
8
+
9
+ COPY . /app/code/
10
+
11
+ RUN RAILS_ENV=production SECRET_KEY_BASE=placeholder bundle exec rake assets:precompile 2>/dev/null || true
12
+
13
+ ADD supervisor/* /etc/supervisor/conf.d/
14
+ RUN ln -sf /run/supervisord.log /var/log/supervisor/supervisord.log
15
+
16
+ CMD [ "/app/code/start.sh" ]
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'rails', '~> 7.2'
4
+ gem 'puma', '~> 6.0'
5
+ gem 'pg', '~> 1.5'
@@ -0,0 +1,4 @@
1
+ production:
2
+ adapter: postgresql
3
+ url: <%= ENV['DATABASE_URL'] %>
4
+ pool: <%= ENV.fetch("RAILS_MAX_THREADS", 5) %>
@@ -0,0 +1,9 @@
1
+ workers 2
2
+ threads_count = Integer(ENV.fetch("RAILS_MAX_THREADS", 5))
3
+ threads threads_count, threads_count
4
+
5
+ bind "tcp://0.0.0.0:3000"
6
+
7
+ environment ENV.fetch("RAILS_ENV", "production")
8
+
9
+ pidfile "/run/puma.pid"
@@ -0,0 +1,7 @@
1
+ .git
2
+ .gitignore
3
+ .dockerignore
4
+ node_modules
5
+ tmp
6
+ log
7
+ vendor/bundle
@@ -0,0 +1,12 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Cloudron App</title>
7
+ </head>
8
+ <body>
9
+ <h1>Hello from Cloudron!</h1>
10
+ <p>Your Rails app is running. Remove this file and add your routes.</p>
11
+ </body>
12
+ </html>
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+
5
+ chown -R cloudron:cloudron /app/data
6
+
7
+ export RAILS_ENV=production
8
+ export SECRET_KEY_BASE="${CLOUDRON_APP_ORIGIN}"
9
+ export DATABASE_URL="postgres://${CLOUDRON_POSTGRESQL_USERNAME}:${CLOUDRON_POSTGRESQL_PASSWORD}@${CLOUDRON_POSTGRESQL_HOST}:${CLOUDRON_POSTGRESQL_PORT}/${CLOUDRON_POSTGRESQL_DATABASE}"
10
+
11
+ bundle exec rake db:migrate 2>/dev/null || true
12
+
13
+ echo "Starting supervisor"
14
+ exec /usr/bin/supervisord --configuration /etc/supervisor/supervisord.conf --nodaemon -i RailsApp
@@ -0,0 +1,12 @@
1
+ [program:puma]
2
+ priority=5
3
+ directory=/app/code
4
+ command=bundle exec puma -C config/puma.rb
5
+ user=cloudron
6
+ autostart=true
7
+ autorestart=true
8
+ stdout_logfile=/dev/stdout
9
+ stdout_logfile_maxbytes=0
10
+ stderr_logfile=/dev/stderr
11
+ stderr_logfile_maxbytes=0
12
+ environment=HOME="/app/code"
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Ruby on Rails app with Puma, Supervisor, and PostgreSQL"
3
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "id": "",
3
+ "version": "0.1.0",
4
+ "upstreamVersion": "",
5
+ "minBoxVersion": "9.0.0",
6
+ "title": "",
7
+ "author": "",
8
+ "description": "file://DESCRIPTION.md",
9
+ "tagline": "",
10
+ "website": "",
11
+ "contactEmail": "",
12
+ "iconUrl": "file://logo.png",
13
+ "healthCheckPath": "/",
14
+ "mediaLinks": [],
15
+ "httpPort": 3000,
16
+ "tags": [],
17
+ "changelog": "file://CHANGELOG",
18
+ "postInstallMessage": "file://POSTINSTALL.md",
19
+ "documentationUrl": "",
20
+ "forumUrl": "",
21
+ "addons": {
22
+ "localstorage": {}
23
+ },
24
+ "manifestVersion": 2
25
+ }
@@ -0,0 +1,17 @@
1
+ FROM cloudron/base:5.0.0@sha256:04fd70dbd8ad6149c19de39e35718e024417c3e01dc9c6637eaf4a41ec4e596c
2
+
3
+ RUN mkdir -p /app/code
4
+ WORKDIR /app/code
5
+
6
+ RUN rm /etc/apache2/sites-enabled/*
7
+ RUN sed -e 's,^ErrorLog.*,ErrorLog "|/bin/cat",' -i /etc/apache2/apache2.conf
8
+ COPY apache/mpm_prefork.conf /etc/apache2/mods-available/mpm_prefork.conf
9
+
10
+ RUN a2disconf other-vhosts-access-log
11
+ COPY apache/app.conf /etc/apache2/sites-enabled/app.conf
12
+ RUN echo "Listen 3000" > /etc/apache2/ports.conf
13
+
14
+ COPY public/ /app/code/public/
15
+ COPY start.sh /app/code/
16
+
17
+ CMD [ "/app/code/start.sh" ]
@@ -0,0 +1,13 @@
1
+ <VirtualHost *:3000>
2
+ DocumentRoot /app/code/public
3
+
4
+ ErrorLog "|/bin/cat"
5
+ CustomLog "|/bin/cat" combined
6
+
7
+ <Directory /app/code/public/>
8
+ Options +FollowSymLinks
9
+ AllowOverride All
10
+ Require all granted
11
+ </Directory>
12
+
13
+ </VirtualHost>
@@ -0,0 +1,7 @@
1
+ <IfModule mpm_prefork_module>
2
+ StartServers 2
3
+ MinSpareServers 2
4
+ MaxSpareServers 3
5
+ MaxRequestWorkers 15
6
+ MaxConnectionsPerChild 100
7
+ </IfModule>
@@ -0,0 +1,3 @@
1
+ .git
2
+ .gitignore
3
+ .dockerignore
@@ -0,0 +1,11 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Cloudron App</title>
7
+ </head>
8
+ <body>
9
+ <h1>Hello from Cloudron!</h1>
10
+ </body>
11
+ </html>
@@ -0,0 +1,7 @@
1
+ #!/bin/bash
2
+
3
+ set -eu
4
+
5
+ APACHE_CONFDIR="" source /etc/apache2/envvars
6
+ rm -f "${APACHE_PID_FILE}"
7
+ exec /usr/sbin/apache2 -DFOREGROUND
@@ -0,0 +1,3 @@
1
+ {
2
+ "description": "Static website with Apache"
3
+ }
package/test/test.js CHANGED
@@ -15,7 +15,7 @@ const cloudron = process.env.CLOUDRON;
15
15
  const username = process.env.USERNAME;
16
16
  const password = process.env.PASSWORD;
17
17
 
18
- const applocation = 'test';
18
+ const applocation = 'cli-test';
19
19
  let app;
20
20
 
21
21
  const CLI = path.resolve(import.meta.dirname + '/../bin/cloudron');