Merge branch 'next' into feat/disable-default-redirect

This commit is contained in:
Kael
2024-11-03 18:58:59 +11:00
committed by GitHub
28 changed files with 612 additions and 2893 deletions

View File

@@ -51,6 +51,8 @@ class StartClickhouse
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => "clickhouse-client --password {$this->database->clickhouse_admin_password} --query 'SELECT 1'",

View File

@@ -48,6 +48,8 @@ class StartDragonfly
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => "redis-cli -a {$this->database->dragonfly_password} ping",

View File

@@ -50,6 +50,8 @@ class StartKeydb
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => "keydb-cli --pass {$this->database->keydb_password} ping",

View File

@@ -45,6 +45,8 @@ class StartMariadb
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => ['CMD', 'healthcheck.sh', '--connect', '--innodb_initialized'],

View File

@@ -49,6 +49,8 @@ class StartMongodb
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => [

View File

@@ -45,6 +45,8 @@ class StartMysql
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => ['CMD', 'mysqladmin', 'ping', '-h', 'localhost', '-u', 'root', "-p{$this->database->mysql_root_password}"],

View File

@@ -49,6 +49,8 @@ class StartPostgresql
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => [

View File

@@ -50,6 +50,8 @@ class StartRedis
],
'labels' => [
'coolify.managed' => 'true',
'coolify.type' => 'database',
'coolify.databaseId' => $this->database->id,
],
'healthcheck' => [
'test' => [

View File

@@ -7,7 +7,7 @@ use Illuminate\Support\Facades\DB;
class CleanupDatabase extends Command
{
protected $signature = 'cleanup:database {--yes}';
protected $signature = 'cleanup:database {--yes} {--keep-days=}';
protected $description = 'Cleanup database';
@@ -20,9 +20,9 @@ class CleanupDatabase extends Command
}
if (isCloud()) {
// Later on we can increase this to 180 days or dynamically set
$keep_days = 60;
$keep_days = $this->option('keep-days') ?? 60;
} else {
$keep_days = 60;
$keep_days = $this->option('keep-days') ?? 60;
}
echo "Keep days: $keep_days\n";
// Cleanup failed jobs table

View File

@@ -14,6 +14,7 @@ use App\Jobs\ScheduledTaskJob;
use App\Jobs\ServerCheckJob;
use App\Jobs\ServerCleanupMux;
use App\Jobs\UpdateCoolifyJob;
use App\Models\InstanceSettings;
use App\Models\ScheduledDatabaseBackup;
use App\Models\ScheduledTask;
use App\Models\Server;
@@ -26,10 +27,13 @@ class Kernel extends ConsoleKernel
{
private $allServers;
private InstanceSettings $settings;
protected function schedule(Schedule $schedule): void
{
$this->allServers = Server::all();
$settings = instanceSettings();
$this->allServers = Server::where('ip', '!=', '1.2.3.4')->get();
$this->settings = instanceSettings();
$schedule->job(new CleanupStaleMultiplexedConnections)->hourly();
@@ -43,14 +47,12 @@ class Kernel extends ConsoleKernel
$this->checkScheduledTasks($schedule);
$schedule->command('uploads:clear')->everyTwoMinutes();
$schedule->command('telescope:prune')->daily();
$schedule->job(new CheckHelperImageJob)->everyFiveMinutes()->onOneServer();
} else {
// Instance Jobs
$schedule->command('horizon:snapshot')->everyFiveMinutes();
$schedule->command('cleanup:unreachable-servers')->daily()->onOneServer();
$schedule->job(new PullTemplatesFromCDN)->cron($settings->update_check_frequency)->timezone($settings->instance_timezone)->onOneServer();
$schedule->job(new PullTemplatesFromCDN)->cron($this->settings->update_check_frequency)->timezone($this->settings->instance_timezone)->onOneServer();
$schedule->job(new CleanupInstanceStuffsJob)->everyTwoMinutes()->onOneServer();
$this->scheduleUpdates($schedule);
@@ -67,36 +69,33 @@ class Kernel extends ConsoleKernel
private function pullImages($schedule): void
{
$settings = instanceSettings();
$servers = $this->allServers->where('settings.is_usable', true)->where('settings.is_reachable', true)->where('ip', '!=', '1.2.3.4');
$servers = $this->allServers->whereRelation('settings', 'is_usable', true)->whereRelation('settings', 'is_reachable', true);
foreach ($servers as $server) {
if ($server->isSentinelEnabled()) {
$schedule->job(function () use ($server) {
CheckAndStartSentinelJob::dispatch($server);
})->cron($settings->update_check_frequency)->timezone($settings->instance_timezone)->onOneServer();
})->cron($this->settings->update_check_frequency)->timezone($this->settings->instance_timezone)->onOneServer();
}
}
$schedule->job(new CheckHelperImageJob)
->cron($settings->update_check_frequency)
->timezone($settings->instance_timezone)
->cron($this->settings->update_check_frequency)
->timezone($this->settings->instance_timezone)
->onOneServer();
}
private function scheduleUpdates($schedule): void
{
$settings = instanceSettings();
$updateCheckFrequency = $settings->update_check_frequency;
$updateCheckFrequency = $this->settings->update_check_frequency;
$schedule->job(new CheckForUpdatesJob)
->cron($updateCheckFrequency)
->timezone($settings->instance_timezone)
->timezone($this->settings->instance_timezone)
->onOneServer();
if ($settings->is_auto_update_enabled) {
$autoUpdateFrequency = $settings->auto_update_frequency;
if ($this->settings->is_auto_update_enabled) {
$autoUpdateFrequency = $this->settings->auto_update_frequency;
$schedule->job(new UpdateCoolifyJob)
->cron($autoUpdateFrequency)
->timezone($settings->instance_timezone)
->timezone($this->settings->instance_timezone)
->onOneServer();
}
}
@@ -104,11 +103,11 @@ class Kernel extends ConsoleKernel
private function checkResources($schedule): void
{
if (isCloud()) {
$servers = $this->allServers->whereNotNull('team.subscription')->where('team.subscription.stripe_trial_already_ended', false)->where('ip', '!=', '1.2.3.4');
$servers = $this->allServers->whereNotNull('team.subscription')->where('team.subscription.stripe_trial_already_ended', false);
$own = Team::find(0)->servers;
$servers = $servers->merge($own);
} else {
$servers = $this->allServers->where('ip', '!=', '1.2.3.4');
$servers = $this->allServers;
}
foreach ($servers as $server) {
$lastSentinelUpdate = $server->sentinel_updated_at;

View File

@@ -25,19 +25,6 @@ class ServerCheckJob implements ShouldBeEncrypted, ShouldQueue
public $containers;
public $applications;
public $databases;
public $services;
public $previews;
public function backoff(): int
{
return isDev() ? 1 : 3;
}
public function __construct(public Server $server) {}
public function handle()
@@ -47,11 +34,6 @@ class ServerCheckJob implements ShouldBeEncrypted, ShouldQueue
return 'Server is not reachable or not ready.';
}
$this->applications = $this->server->applications();
$this->databases = $this->server->databases();
$this->services = $this->server->services()->get();
$this->previews = $this->server->previews();
if (! $this->server->isSwarmWorker() && ! $this->server->isBuildServer()) {
['containers' => $this->containers, 'containerReplicates' => $containerReplicates] = $this->server->getContainers();
if (is_null($this->containers)) {

View File

@@ -2,6 +2,8 @@
namespace App\Livewire\Server;
use App\Actions\Server\StartSentinel;
use App\Actions\Server\StopSentinel;
use App\Models\Server;
use Livewire\Attributes\Rule;
use Livewire\Component;
@@ -177,6 +179,37 @@ class Show extends Component
}
}
public function restartSentinel()
{
$this->server->restartSentinel();
$this->dispatch('success', 'Sentinel restarted.');
}
public function updatedIsSentinelDebugEnabled($value)
{
$this->submit();
$this->restartSentinel();
}
public function updatedIsMetricsEnabled($value)
{
$this->submit();
$this->restartSentinel();
}
public function updatedIsSentinelEnabled($value)
{
if ($value === true) {
StartSentinel::run($this->server, true);
} else {
$this->isMetricsEnabled = false;
$this->isSentinelDebugEnabled = false;
StopSentinel::dispatch($this->server);
}
$this->submit();
}
public function regenerateSentinelToken()
{
try {
@@ -196,7 +229,7 @@ class Show extends Component
{
try {
$this->syncData(true);
$this->dispatch('success', 'Server updated');
$this->dispatch('success', 'Server updated.');
} catch (\Throwable $e) {
return handleError($e, $this);
}

View File

@@ -5,7 +5,6 @@ namespace App\Models;
use App\Actions\Server\InstallDocker;
use App\Actions\Server\StartSentinel;
use App\Enums\ProxyTypes;
use App\Helpers\SshMultiplexingHelper;
use App\Jobs\CheckAndStartSentinelJob;
use App\Notifications\Server\Reachable;
use App\Notifications\Server\Unreachable;
@@ -875,8 +874,6 @@ $schema://$host {
$standalone_docker = $this->hasMany(StandaloneDocker::class)->get();
$swarm_docker = $this->hasMany(SwarmDocker::class)->get();
// $additional_dockers = $this->belongsToMany(StandaloneDocker::class, 'additional_destinations')->withPivot('server_id')->get();
// return $standalone_docker->concat($swarm_docker)->concat($additional_dockers);
return $standalone_docker->concat($swarm_docker);
}
@@ -1056,8 +1053,6 @@ $schema://$host {
{
config()->set('constants.ssh.mux_enabled', ! $isManualCheck);
SshMultiplexingHelper::removeMuxFile($this);
if ($this->skipServer()) {
return ['uptime' => false, 'error' => 'Server skipped.'];
}

View File

@@ -10,7 +10,12 @@ use Laravel\Sanctum\Sanctum;
class AppServiceProvider extends ServiceProvider
{
public function register(): void {}
public function register(): void
{
if ($this->app->environment('local')) {
$this->app->register(\Laravel\Telescope\TelescopeServiceProvider::class);
}
}
public function boot(): void
{

View File

@@ -22,7 +22,6 @@
"laravel/prompts": "^0.1.6",
"laravel/sanctum": "^4.0",
"laravel/socialite": "^5.14.0",
"laravel/telescope": "^5.2",
"laravel/tinker": "^2.8.1",
"laravel/ui": "^4.2",
"lcobucci/jwt": "^5.0.0",
@@ -56,6 +55,7 @@
"fakerphp/faker": "^1.21.0",
"laravel/dusk": "^8.0",
"laravel/pint": "^1.16",
"laravel/telescope": "^5.2",
"mockery/mockery": "^1.5.1",
"nunomaduro/collision": "^8.1",
"pestphp/pest": "^2.16",
@@ -119,4 +119,4 @@
"@php artisan key:generate --ansi"
]
}
}
}

140
composer.lock generated
View File

@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "74c6029744c5c1101c704098a280bba1",
"content-hash": "3f2342fe6b1ba920c8875f8a8fe41962",
"packages": [
{
"name": "amphp/amp",
@@ -3476,75 +3476,6 @@
},
"time": "2024-09-03T09:46:57+00:00"
},
{
"name": "laravel/telescope",
"version": "v5.2.2",
"source": {
"type": "git",
"url": "https://github.com/laravel/telescope.git",
"reference": "daaf95dee9fab2dd80f59b5f6611c6c0eff44878"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/telescope/zipball/daaf95dee9fab2dd80f59b5f6611c6c0eff44878",
"reference": "daaf95dee9fab2dd80f59b5f6611c6c0eff44878",
"shasum": ""
},
"require": {
"ext-json": "*",
"laravel/framework": "^8.37|^9.0|^10.0|^11.0",
"php": "^8.0",
"symfony/console": "^5.3|^6.0|^7.0",
"symfony/var-dumper": "^5.0|^6.0|^7.0"
},
"require-dev": {
"ext-gd": "*",
"guzzlehttp/guzzle": "^6.0|^7.0",
"laravel/octane": "^1.4|^2.0|dev-develop",
"orchestra/testbench": "^6.40|^7.37|^8.17|^9.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.0|^10.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Laravel\\Telescope\\TelescopeServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Laravel\\Telescope\\": "src/",
"Laravel\\Telescope\\Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Mohamed Said",
"email": "mohamed@laravel.com"
}
],
"description": "An elegant debug assistant for the Laravel framework.",
"keywords": [
"debugging",
"laravel",
"monitoring"
],
"support": {
"issues": "https://github.com/laravel/telescope/issues",
"source": "https://github.com/laravel/telescope/tree/v5.2.2"
},
"time": "2024-08-26T12:40:52+00:00"
},
{
"name": "laravel/tinker",
"version": "v2.10.0",
@@ -12467,6 +12398,75 @@
},
"time": "2024-09-24T17:22:50+00:00"
},
{
"name": "laravel/telescope",
"version": "v5.2.4",
"source": {
"type": "git",
"url": "https://github.com/laravel/telescope.git",
"reference": "749369e996611d803e7c1b57929b482dd676008d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/telescope/zipball/749369e996611d803e7c1b57929b482dd676008d",
"reference": "749369e996611d803e7c1b57929b482dd676008d",
"shasum": ""
},
"require": {
"ext-json": "*",
"laravel/framework": "^8.37|^9.0|^10.0|^11.0",
"php": "^8.0",
"symfony/console": "^5.3|^6.0|^7.0",
"symfony/var-dumper": "^5.0|^6.0|^7.0"
},
"require-dev": {
"ext-gd": "*",
"guzzlehttp/guzzle": "^6.0|^7.0",
"laravel/octane": "^1.4|^2.0|dev-develop",
"orchestra/testbench": "^6.40|^7.37|^8.17|^9.0",
"phpstan/phpstan": "^1.10",
"phpunit/phpunit": "^9.0|^10.5"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"Laravel\\Telescope\\TelescopeServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Laravel\\Telescope\\": "src/",
"Laravel\\Telescope\\Database\\Factories\\": "database/factories/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
},
{
"name": "Mohamed Said",
"email": "mohamed@laravel.com"
}
],
"description": "An elegant debug assistant for the Laravel framework.",
"keywords": [
"debugging",
"laravel",
"monitoring"
],
"support": {
"issues": "https://github.com/laravel/telescope/issues",
"source": "https://github.com/laravel/telescope/tree/v5.2.4"
},
"time": "2024-10-29T15:35:13+00:00"
},
{
"name": "maximebf/debugbar",
"version": "v1.23.2",

View File

@@ -199,8 +199,6 @@ return [
App\Providers\EventServiceProvider::class,
App\Providers\HorizonServiceProvider::class,
App\Providers\RouteServiceProvider::class,
App\Providers\TelescopeServiceProvider::class,
],
/*

View File

@@ -115,7 +115,6 @@ return [
'livewire*',
'nova-api*',
'pulse*',
'broadcasting/auth',
],
'ignore_commands' => [
@@ -161,20 +160,20 @@ return [
Watchers\ExceptionWatcher::class => env('TELESCOPE_EXCEPTION_WATCHER', true),
Watchers\GateWatcher::class => [
'enabled' => env('TELESCOPE_GATE_WATCHER', false),
'enabled' => env('TELESCOPE_GATE_WATCHER', true),
'ignore_abilities' => [],
'ignore_packages' => true,
'ignore_paths' => [],
],
Watchers\JobWatcher::class => env('TELESCOPE_JOB_WATCHER', false),
Watchers\JobWatcher::class => env('TELESCOPE_JOB_WATCHER', true),
Watchers\LogWatcher::class => [
'enabled' => env('TELESCOPE_LOG_WATCHER', true),
'level' => 'debug',
'level' => 'error',
],
Watchers\MailWatcher::class => env('TELESCOPE_MAIL_WATCHER', false),
Watchers\MailWatcher::class => env('TELESCOPE_MAIL_WATCHER', true),
Watchers\ModelWatcher::class => [
'enabled' => env('TELESCOPE_MODEL_WATCHER', true),
@@ -182,7 +181,7 @@ return [
'hydrations' => true,
],
Watchers\NotificationWatcher::class => env('TELESCOPE_NOTIFICATION_WATCHER', false),
Watchers\NotificationWatcher::class => env('TELESCOPE_NOTIFICATION_WATCHER', true),
Watchers\QueryWatcher::class => [
'enabled' => env('TELESCOPE_QUERY_WATCHER', true),
@@ -200,7 +199,7 @@ return [
'ignore_status_codes' => [],
],
Watchers\ScheduleWatcher::class => env('TELESCOPE_SCHEDULE_WATCHER', false),
Watchers\ScheduleWatcher::class => env('TELESCOPE_SCHEDULE_WATCHER', true),
Watchers\ViewWatcher::class => env('TELESCOPE_VIEW_WATCHER', true),
],
];

283
public/svgs/jenkins.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 29 KiB

8
public/svgs/jitsi.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 12 KiB

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
{
"/app.js": "/app.js?id=48ba33a2532e4b6ec718bc0f03b3f1e4",
"/app.js": "/app.js?id=99f84d421ae083196e0a45c3c310168b",
"/app-dark.css": "/app-dark.css?id=1ea407db56c5163ae29311f1f38eb7b9",
"/app.css": "/app.css?id=de4c978567bfd90b38d186937dee5ccf"
}

View File

@@ -70,7 +70,7 @@
</div>
<div class="flex items-end gap-2">
<x-forms.select label="Direction" id="application.redirect" required
helper="You must need to add www and non-www as an A DNS record.">
helper="You need to add both the www and non-www A DNS records pointing to your server.">
<option value="both">Allow www & non-www.</option>
<option value="www">Redirect to www.</option>
<option value="non-www">Redirect to non-www.</option>

View File

@@ -205,7 +205,6 @@
<x-forms.checkbox id="isSentinelDebugEnabled" label="Enable Sentinel Debug" disabled
instantSave />
<x-forms.checkbox instantSave disabled id="isMetricsEnabled" label="Enable Metrics" />
label="Enable Metrics" />
@endif
</div>
@if ($server->isSentinelEnabled())

View File

@@ -13,7 +13,7 @@ x-logging: &x-logging
services:
appwrite:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
container_name: appwrite
<<: *x-logging
volumes:
@@ -120,7 +120,7 @@ services:
- _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY}
appwrite-realtime:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: realtime
<<: *x-logging
depends_on:
@@ -146,7 +146,7 @@ services:
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
appwrite-worker-audits:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-audits
<<: *x-logging
container_name: appwrite-worker-audits
@@ -170,7 +170,7 @@ services:
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
appwrite-worker-webhooks:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-webhooks
<<: *x-logging
container_name: appwrite-worker-webhooks
@@ -190,7 +190,7 @@ services:
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
appwrite-worker-deletes:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-deletes
<<: *x-logging
container_name: appwrite-worker-deletes
@@ -243,7 +243,7 @@ services:
- _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1}
appwrite-worker-databases:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-databases
<<: *x-logging
container_name: appwrite-worker-databases
@@ -267,7 +267,7 @@ services:
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
appwrite-worker-builds:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-builds
<<: *x-logging
container_name: appwrite-worker-builds
@@ -326,7 +326,7 @@ services:
- _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET}
appwrite-worker-certificates:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-certificates
<<: *x-logging
container_name: appwrite-worker-certificates
@@ -357,7 +357,7 @@ services:
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
appwrite-worker-functions:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-functions
<<: *x-logging
container_name: appwrite-worker-functions
@@ -392,7 +392,7 @@ services:
- _APP_LOGGING_PROVIDER=${_APP_LOGGING_PROVIDER}
appwrite-worker-mails:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-mails
<<: *x-logging
container_name: appwrite-worker-mails
@@ -417,7 +417,7 @@ services:
- _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG}
appwrite-worker-messaging:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-messaging
<<: *x-logging
container_name: appwrite-worker-messaging
@@ -442,7 +442,7 @@ services:
- _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER}
appwrite-worker-migrations:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-migrations
<<: *x-logging
container_name: appwrite-worker-migrations
@@ -470,7 +470,7 @@ services:
- _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET}
appwrite-maintenance:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: maintenance
<<: *x-logging
container_name: appwrite-maintenance
@@ -501,7 +501,7 @@ services:
- _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400}
appwrite-worker-usage:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-usage
container_name: appwrite-worker-usage
<<: *x-logging
@@ -528,7 +528,7 @@ services:
- _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30}
appwrite-worker-usage-dump:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: worker-usage-dump
<<: *x-logging
container_name: appwrite-worker-usage-dump
@@ -554,7 +554,7 @@ services:
- _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30}
appwrite-scheduler-functions:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: schedule-functions
container_name: appwrite-scheduler-functions
<<: *x-logging
@@ -577,7 +577,7 @@ services:
- _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB
appwrite-scheduler-messages:
image: appwrite/appwrite:1.5
image: appwrite/appwrite:1.6
entrypoint: schedule-messages
container_name: appwrite-scheduler-messages
<<: *x-logging

View File

@@ -0,0 +1,20 @@
# documentation: https://www.jenkins.io/doc/
# slogan: Jenkins is an open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project.
# tags: jenkins, automation, open-source
# logo: svgs/jenkins.svg
# port: 8080
services:
jenkins:
image: jenkins/jenkins:latest
environment:
- SERVICE_FQDN_JENKINS_8080
volumes:
- jenkins-home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/login"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s

View File

@@ -0,0 +1,125 @@
# documentation: https://jitsi.github.io/handbook/docs/intro
# slogan: World's easiest way to add meetings to your apps
# logo: svgs/jitsi.svg
# tags: video, conferencing, meetings, communication, open-source
services:
jitsi-web:
image: "jitsi/web:${JITSI_IMAGE_VERSION:-unstable}"
container_name: jitsi-web
restart: unless-stopped
ports:
- "8001:80"
- "8443:443"
volumes:
- ~/.jitsi-meet-cfg/web:/config:Z
- ~/.jitsi-meet-cfg/web/crontabs:/var/spool/cron/crontabs:Z
- ~/.jitsi-meet-cfg/transcripts:/usr/share/jitsi-meet/transcripts:Z
environment:
- SERVICE_FQDN_JITSI
- PUBLIC_URL=$SERVICE_FQDN_JITSI
- JITSI_IMAGE_VERSION=unstable
- JIBRI_RECORDER_PASSWORD=$SERVICE_PASSWORD_JITSI
- JIBRI_XMPP_PASSWORD=$SERVICE_PASSWORD_JITSI
- JICOFO_AUTH_PASSWORD=$SERVICE_PASSWORD_JITSI
- JIGASI_XMPP_PASSWORD=$SERVICE_PASSWORD_JITSI
- JVB_AUTH_PASSWORD=$SERVICE_PASSWORD_JITSI
- TZ=UTC
networks:
meet.jitsi:
aliases:
- meet.jitsi
depends_on:
- jvb
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 2s
timeout: 10s
retries: 15
prosody:
image: "jitsi/prosody:${JITSI_IMAGE_VERSION:-unstable}"
expose:
- '5222'
- '5347'
- '5280'
container_name: jitsi-xmpp
restart: unless-stopped
volumes:
- ~/.jitsi-meet-cfg/prosody/config:/config:Z
- ~/.jitsi-meet-cfg/prosody/prosody-plugins-custom:/prosody-plugins-custom:Z
environment:
- JICOFO_AUTH_PASSWORD
- JVB_AUTH_PASSWORD
- PUBLIC_URL=$SERVICE_FQDN_JITSI
- TZ
networks:
meet.jitsi:
aliases:
- xmpp.meet.jitsi
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5280/http-bind"]
interval: 2s
timeout: 10s
retries: 15
jicofo:
image: "jitsi/jicofo:${JITSI_IMAGE_VERSION:-unstable}"
container_name: jitsi-jicofo
restart: unless-stopped
volumes:
- ~/.jitsi-meet-cfg/jicofo:/config:Z
environment:
- XMPP_SERVER=prosody
- JICOFO_AUTH_PASSWORD
- TZ
- JICOFO_ENABLE_HEALTH_CHECKS=1
depends_on:
- prosody
networks:
meet.jitsi:
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8888/about/health"]
interval: 2s
timeout: 10s
retries: 15
jvb:
image: "jitsi/jvb:${JITSI_IMAGE_VERSION:-unstable}"
container_name: jitsi-jvb
restart: unless-stopped
expose:
- '10000:10000/udp'
- '8080:8080'
- '10000'
volumes:
- ~/.jitsi-meet-cfg/jvb:/config:Z
environment:
- JVB_ADVERTISE_IPS
- JVB_AUTH_PASSWORD
- PUBLIC_URL=$SERVICE_FQDN_JITSI
- TZ
- XMPP_SERVER=prosody
depends_on:
- prosody
networks:
meet.jitsi:
labels:
- "traefik.enable=true"
- "traefik.udp.routers.my-udp-router.entrypoints=video"
- "traefik.udp.routers.my-udp-router.service=my-udp-service"
- "traefik.udp.services.my-udp-service.loadbalancer.server.port=10000"
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/about/health"]
interval: 2s
timeout: 10s
retries: 15
networks:
meet.jitsi:
volumes:
jitsi-web:
jitsi-xmpp:
jitsi-jicofo:
jitsi-jvb:

File diff suppressed because one or more lines are too long