Compare commits
64 Commits
new-servic
...
new-servic
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1d4dd405b8 | ||
|
|
482016be1d | ||
|
|
c5e6d04a95 | ||
|
|
ce352eb590 | ||
|
|
3e5b0d920c | ||
|
|
dc75e5dc6e | ||
|
|
34e7805ef4 | ||
|
|
dee9123694 | ||
|
|
b02720aac8 | ||
|
|
3000579bcd | ||
|
|
be03e0c587 | ||
|
|
f0e6892d77 | ||
|
|
44f2d521a2 | ||
|
|
ef821b2c2d | ||
|
|
8d2fef558f | ||
|
|
a979beb3a6 | ||
|
|
0143b9bb26 | ||
|
|
ce9d4308d4 | ||
|
|
57a96c2579 | ||
|
|
4e9bafd6df | ||
|
|
15b5cbf68f | ||
|
|
bfe9a17f4b | ||
|
|
ec3916bb7e | ||
|
|
e16ccb2bcd | ||
|
|
a361a864dd | ||
|
|
1bed6bf696 | ||
|
|
5c65eb281d | ||
|
|
0cd2ca6e79 | ||
|
|
7cb9cb0a44 | ||
|
|
2b9b2af8fe | ||
|
|
b8f211eced | ||
|
|
1034d9c315 | ||
|
|
37bc2643a5 | ||
|
|
df152e9fbd | ||
|
|
3a352e832b | ||
|
|
1b8365d559 | ||
|
|
82f96fe677 | ||
|
|
48e4ebdb5d | ||
|
|
028c41b011 | ||
|
|
d53c1f99d6 | ||
|
|
464769881f | ||
|
|
0f7a199d81 | ||
|
|
2f356b16b6 | ||
|
|
a6f457f2f3 | ||
|
|
b8cdb40ce5 | ||
|
|
7f59efd27c | ||
|
|
4f23d3880d | ||
|
|
319457020c | ||
|
|
380f2f4029 | ||
|
|
6b178f8b2e | ||
|
|
633c8253ec | ||
|
|
fa253b981a | ||
|
|
45b4d1b25b | ||
|
|
e1a585c194 | ||
|
|
631b7096c9 | ||
|
|
cdb146f03c | ||
|
|
ea81d8ecfe | ||
|
|
793f91e7fb | ||
|
|
807304c50b | ||
|
|
204aaf5dfa | ||
|
|
c1612a9e88 | ||
|
|
3847076392 | ||
|
|
ac887eefd6 | ||
|
|
2637afcfb2 |
@@ -1,17 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Actions\Application;
|
|
||||||
|
|
||||||
use App\Models\Application;
|
|
||||||
use Lorisleiva\Actions\Concerns\AsAction;
|
|
||||||
|
|
||||||
class GenerateConfig
|
|
||||||
{
|
|
||||||
use AsAction;
|
|
||||||
|
|
||||||
public function handle(Application $application, bool $is_json = false)
|
|
||||||
{
|
|
||||||
ray()->clearAll();
|
|
||||||
return $application->generateConfig(is_json: $is_json);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Livewire\Project\Application;
|
namespace App\Livewire\Project\Application;
|
||||||
|
|
||||||
use App\Actions\Application\GenerateConfig;
|
|
||||||
use App\Models\Application;
|
use App\Models\Application;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Livewire\Component;
|
use Livewire\Component;
|
||||||
@@ -414,16 +413,4 @@ class General extends Component
|
|||||||
$this->dispatch('configurationChanged');
|
$this->dispatch('configurationChanged');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public function downloadConfig()
|
|
||||||
{
|
|
||||||
$config = GenerateConfig::run($this->application, true);
|
|
||||||
$fileName = str($this->application->name)->slug()->append('_config.json');
|
|
||||||
|
|
||||||
return response()->streamDownload(function () use ($config) {
|
|
||||||
echo $config;
|
|
||||||
}, $fileName, [
|
|
||||||
'Content-Type' => 'application/json',
|
|
||||||
'Content-Disposition' => 'attachment; filename=' . $fileName,
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,12 +31,10 @@ class PublicGitRepository extends Component
|
|||||||
|
|
||||||
public bool $isStatic = false;
|
public bool $isStatic = false;
|
||||||
|
|
||||||
public bool $checkCoolifyConfig = true;
|
|
||||||
|
|
||||||
public ?string $publish_directory = null;
|
public ?string $publish_directory = null;
|
||||||
|
|
||||||
// In case of docker compose
|
// In case of docker compose
|
||||||
public string $base_directory = '/';
|
public ?string $base_directory = null;
|
||||||
|
|
||||||
public ?string $docker_compose_location = '/docker-compose.yaml';
|
public ?string $docker_compose_location = '/docker-compose.yaml';
|
||||||
// End of docker compose
|
// End of docker compose
|
||||||
@@ -99,7 +97,6 @@ class PublicGitRepository extends Component
|
|||||||
$this->base_directory = '/'.$this->base_directory;
|
$this->base_directory = '/'.$this->base_directory;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function updatedDockerComposeLocation()
|
public function updatedDockerComposeLocation()
|
||||||
@@ -278,7 +275,6 @@ class PublicGitRepository extends Component
|
|||||||
'destination_id' => $destination->id,
|
'destination_id' => $destination->id,
|
||||||
'destination_type' => $destination_class,
|
'destination_type' => $destination_class,
|
||||||
'build_pack' => $this->build_pack,
|
'build_pack' => $this->build_pack,
|
||||||
'base_directory' => $this->base_directory,
|
|
||||||
];
|
];
|
||||||
} else {
|
} else {
|
||||||
$application_init = [
|
$application_init = [
|
||||||
@@ -293,7 +289,6 @@ class PublicGitRepository extends Component
|
|||||||
'source_id' => $this->git_source->id,
|
'source_id' => $this->git_source->id,
|
||||||
'source_type' => $this->git_source->getMorphClass(),
|
'source_type' => $this->git_source->getMorphClass(),
|
||||||
'build_pack' => $this->build_pack,
|
'build_pack' => $this->build_pack,
|
||||||
'base_directory' => $this->base_directory,
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,15 +303,11 @@ class PublicGitRepository extends Component
|
|||||||
|
|
||||||
$application->settings->is_static = $this->isStatic;
|
$application->settings->is_static = $this->isStatic;
|
||||||
$application->settings->save();
|
$application->settings->save();
|
||||||
|
|
||||||
$fqdn = generateFqdn($destination->server, $application->uuid);
|
$fqdn = generateFqdn($destination->server, $application->uuid);
|
||||||
$application->fqdn = $fqdn;
|
$application->fqdn = $fqdn;
|
||||||
$application->save();
|
$application->save();
|
||||||
if ($this->checkCoolifyConfig) {
|
|
||||||
// $config = loadConfigFromGit($this->repository_url, $this->git_branch, $this->base_directory, $this->query['server_id'], auth()->user()->currentTeam()->id);
|
|
||||||
// if ($config) {
|
|
||||||
// $application->setConfig($config);
|
|
||||||
// }
|
|
||||||
}
|
|
||||||
return redirect()->route('project.application.configuration', [
|
return redirect()->route('project.application.configuration', [
|
||||||
'application_uuid' => $application->uuid,
|
'application_uuid' => $application->uuid,
|
||||||
'environment_name' => $environment->name,
|
'environment_name' => $environment->name,
|
||||||
|
|||||||
@@ -1,41 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Livewire\Project\Shared;
|
|
||||||
|
|
||||||
use App\Models\Application;
|
|
||||||
use Livewire\Component;
|
|
||||||
|
|
||||||
class UploadConfig extends Component
|
|
||||||
{
|
|
||||||
public $config;
|
|
||||||
public $applicationId;
|
|
||||||
public function mount() {
|
|
||||||
if (isDev()) {
|
|
||||||
$this->config = '{
|
|
||||||
"build_pack": "nixpacks",
|
|
||||||
"base_directory": "/nodejs",
|
|
||||||
"publish_directory": "/",
|
|
||||||
"ports_exposes": "3000",
|
|
||||||
"settings": {
|
|
||||||
"is_static": false
|
|
||||||
}
|
|
||||||
}';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public function uploadConfig()
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$application = Application::findOrFail($this->applicationId);
|
|
||||||
$application->setConfig($this->config);
|
|
||||||
$this->dispatch('success', 'Application settings updated');
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
$this->dispatch('error', $e->getMessage());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
public function render()
|
|
||||||
{
|
|
||||||
return view('livewire.project.shared.upload-config');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -9,7 +9,6 @@ use Illuminate\Database\Eloquent\SoftDeletes;
|
|||||||
use Illuminate\Process\InvokedProcess;
|
use Illuminate\Process\InvokedProcess;
|
||||||
use Illuminate\Support\Collection;
|
use Illuminate\Support\Collection;
|
||||||
use Illuminate\Support\Facades\Process;
|
use Illuminate\Support\Facades\Process;
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
use OpenApi\Attributes as OA;
|
use OpenApi\Attributes as OA;
|
||||||
use RuntimeException;
|
use RuntimeException;
|
||||||
@@ -1428,67 +1427,4 @@ class Application extends BaseModel
|
|||||||
return $parsedCollection->toArray();
|
return $parsedCollection->toArray();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateConfig($is_json = false)
|
|
||||||
{
|
|
||||||
$config = collect([]);
|
|
||||||
if ($this->build_pack = 'nixpacks') {
|
|
||||||
$config = collect([
|
|
||||||
'build_pack' => 'nixpacks',
|
|
||||||
'docker_registry_image_name' => $this->docker_registry_image_name,
|
|
||||||
'docker_registry_image_tag' => $this->docker_registry_image_tag,
|
|
||||||
'install_command' => $this->install_command,
|
|
||||||
'build_command' => $this->build_command,
|
|
||||||
'start_command' => $this->start_command,
|
|
||||||
'base_directory' => $this->base_directory,
|
|
||||||
'publish_directory' => $this->publish_directory,
|
|
||||||
'custom_docker_run_options' => $this->custom_docker_run_options,
|
|
||||||
'ports_exposes' => $this->ports_exposes,
|
|
||||||
'ports_mappings' => $this->ports_mapping,
|
|
||||||
'settings' => collect([
|
|
||||||
'is_static' => $this->settings->is_static,
|
|
||||||
]),
|
|
||||||
]);
|
|
||||||
}
|
|
||||||
$config = $config->filter(function ($value) {
|
|
||||||
return str($value)->isNotEmpty();
|
|
||||||
});
|
|
||||||
if ($is_json) {
|
|
||||||
return json_encode($config, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $config;
|
|
||||||
}
|
|
||||||
public function setConfig($config) {
|
|
||||||
|
|
||||||
$config = $config;
|
|
||||||
$validator = Validator::make(['config' => $config], [
|
|
||||||
'config' => 'required|json',
|
|
||||||
]);
|
|
||||||
if ($validator->fails()) {
|
|
||||||
throw new \Exception('Invalid JSON format');
|
|
||||||
}
|
|
||||||
$config = json_decode($config, true);
|
|
||||||
|
|
||||||
$deepValidator = Validator::make(['config' => $config], [
|
|
||||||
'config.build_pack' => 'required|string',
|
|
||||||
'config.base_directory' => 'required|string',
|
|
||||||
'config.publish_directory' => 'required|string',
|
|
||||||
'config.ports_exposes' => 'required|string',
|
|
||||||
'config.settings.is_static' => 'required|boolean',
|
|
||||||
]);
|
|
||||||
if ($deepValidator->fails()) {
|
|
||||||
throw new \Exception('Invalid data');
|
|
||||||
}
|
|
||||||
$config = $deepValidator->validated()['config'];
|
|
||||||
|
|
||||||
try {
|
|
||||||
$settings = data_get($config, 'settings', []);
|
|
||||||
data_forget($config, 'settings');
|
|
||||||
$this->update($config);
|
|
||||||
$this->settings()->update($settings);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
throw new \Exception('Failed to update application settings');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3981,31 +3981,3 @@ function instanceSettings()
|
|||||||
{
|
{
|
||||||
return InstanceSettings::get();
|
return InstanceSettings::get();
|
||||||
}
|
}
|
||||||
|
|
||||||
function loadConfigFromGit(string $repository, string $branch, string $base_directory, int $server_id, int $team_id) {
|
|
||||||
|
|
||||||
$server = Server::find($server_id)->where('team_id', $team_id)->first();
|
|
||||||
if (!$server) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$uuid = new Cuid2();
|
|
||||||
$cloneCommand = "git clone --no-checkout -b $branch $repository .";
|
|
||||||
$workdir = rtrim($base_directory, '/');
|
|
||||||
$fileList = collect([".$workdir/coolify.json"]);
|
|
||||||
$commands = collect([
|
|
||||||
"rm -rf /tmp/{$uuid}",
|
|
||||||
"mkdir -p /tmp/{$uuid}",
|
|
||||||
"cd /tmp/{$uuid}",
|
|
||||||
$cloneCommand,
|
|
||||||
'git sparse-checkout init --cone',
|
|
||||||
"git sparse-checkout set {$fileList->implode(' ')}",
|
|
||||||
'git read-tree -mu HEAD',
|
|
||||||
"cat .$workdir/coolify.json",
|
|
||||||
'rm -rf /tmp/{$uuid}',
|
|
||||||
]);
|
|
||||||
try {
|
|
||||||
return instant_remote_process($commands, $server);
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
// continue
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
<?php
|
<?php
|
||||||
return '4.0.0-beta.357';
|
|
||||||
|
|
||||||
|
return '4.0.0-beta.357';
|
||||||
|
|||||||
@@ -1,88 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 500 500" width="500" height="500" style="width:100%;height:100%;transform:translate3d(0,0,0);content-visibility:visible">
|
|
||||||
<defs>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="a"/>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="g"/>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="b"/>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="c"/>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="d"/>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="e"/>
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0z" transform="translate(250 250)" style="display:block" id="f"/>
|
|
||||||
<mask id="r" mask-type="alpha">
|
|
||||||
<use xlink:href="#a"/>
|
|
||||||
</mask>
|
|
||||||
<mask id="p" mask-type="alpha">
|
|
||||||
<use xlink:href="#b"/>
|
|
||||||
</mask>
|
|
||||||
<mask id="n" mask-type="alpha">
|
|
||||||
<use xlink:href="#c"/>
|
|
||||||
</mask>
|
|
||||||
<mask id="m" mask-type="alpha">
|
|
||||||
<use xlink:href="#d"/>
|
|
||||||
</mask>
|
|
||||||
<mask id="l" mask-type="alpha">
|
|
||||||
<use xlink:href="#e"/>
|
|
||||||
</mask>
|
|
||||||
<mask id="k" mask-type="alpha">
|
|
||||||
<use xlink:href="#f"/>
|
|
||||||
</mask>
|
|
||||||
<mask id="j" mask-type="alpha">
|
|
||||||
<use xlink:href="#g"/>
|
|
||||||
</mask>
|
|
||||||
<clipPath id="h">
|
|
||||||
<path d="M0 0h500v500H0z"/>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath id="i">
|
|
||||||
<path d="M0 0h500v500H0z"/>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath id="s">
|
|
||||||
<path d="M0 0h1920v1080H0z"/>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath id="q">
|
|
||||||
<path d="M0 0h1920v1080H0z"/>
|
|
||||||
</clipPath>
|
|
||||||
<clipPath id="o">
|
|
||||||
<path d="M0 0h1920v1080H0z"/>
|
|
||||||
</clipPath>
|
|
||||||
</defs>
|
|
||||||
<g clip-path="url(#h)">
|
|
||||||
<g clip-path="url(#i)" transform="translate(0 24)" style="display:block">
|
|
||||||
<path d="M-6.816-205.027c-20.92 36.208-170.344 294.875-187.382 324.715-1.947 4.684 1.644 10.592 6.749 10.684 1.368.132 11.815.066 13.815.079 97.651.04 259.272-.026 357.187 0 1.526 0 3.79.013 3.895-.079.618.053 1.105-.198 1.658-.224 4.25-1.276 6.815-6.276 5.091-10.447-.408-.592-.237-.67-1.342-2.486C143.266 31.247 71.403-93.101 21.696-179.24c-3.052-5.052-11.868-20.735-14.881-25.774-2.96-5.144-10.684-5.21-13.644 0zm-20.511-11.842c9.105-16.065 30.997-20.709 45.904-9.762 3.566 2.645 6.513 6.039 8.763 9.762l4.96 8.592 9.921 17.183L200.973 83.875l9.921 17.183c1.671 2.987 3.21 5.25 5.236 9.644 1.605 4.105 2.435 8.539 2.29 12.973-.382 13.381-9.974 25.656-22.881 29.248-4.184 1.184-9.144 1.237-11.986 1.184-98.112-.118-259.378.092-357.187 0-6.723-.237-14.512.763-21.906-1.197-17.788-4.96-27.683-25.183-20.578-42.234 17.486-31.524 167.371-290.153 188.791-327.545" transform="translate(250 250)" style="display:block"/>
|
|
||||||
<g mask="url(#j)" style="display:block">
|
|
||||||
<path d="m202.134 244.025 41.827 72.456c2.684 4.658 9.407 4.658 12.091 0l41.826-72.456c2.684-4.658-.671-10.473-6.039-10.473h-83.652c-5.368 0-8.736 5.815-6.039 10.473zm44.182 47.642-21.525-37.274c-1.645-2.842.408-6.394 3.697-6.394h43.05c3.276 0 5.328 3.552 3.697 6.394l-21.525 37.274c-1.645 2.842-5.736 2.842-7.381 0z"/>
|
|
||||||
</g>
|
|
||||||
<g mask="url(#k)" style="display:block">
|
|
||||||
<path d="M230.369 47.341c-22.906 53.22-42.589 115.018-23.274 172.146 2.802 7.868 6.288 15.42 10.604 22.591l-12.486 7.302c-4.684-7.881-8.618-16.486-11.657-25.222-17.749-52.128-4.526-108.427 14.486-158.029 3.197-8.184 6.605-16.262 10.157-24.248l12.157 5.447z"/>
|
|
||||||
</g>
|
|
||||||
<g mask="url(#l)" style="display:block">
|
|
||||||
<path d="M448.039 356.347c-34.642-46.457-78.31-94.402-137.451-106.23-8.21-1.5-16.499-2.263-24.867-2.105l-.079-14.46c9.17-.118 18.578.776 27.669 2.513 54.01 10.697 96.165 50.286 129.61 91.56 5.486 6.855 10.776 13.855 15.92 20.92z"/>
|
|
||||||
</g>
|
|
||||||
<g mask="url(#m)" style="display:block">
|
|
||||||
<path d="M71.59 390.345c57.549-6.776 120.914-20.617 160.727-65.93 5.408-6.355 10.21-13.158 14.262-20.486l12.565 7.158c-4.487 7.999-9.973 15.709-16.012 22.709-36.274 41.432-91.626 58.141-144.096 66.469a586 586 0 0 1-26.077 3.329l-1.355-13.249z"/>
|
|
||||||
</g>
|
|
||||||
<g mask="url(#n)" style="display:block">
|
|
||||||
<g clip-path="url(#o)" transform="translate(-710 -290)">
|
|
||||||
<path d="m26.6-48.803-69.413 93.109-5.881-7.184 62.386-93.517z" transform="translate(990.142 584.502)" style="display:block"/>
|
|
||||||
<path d="M-69.58 28.086 57.952-72.23l11.212 14.81-133.09 92.966z" transform="translate(988.235 608.382)" style="display:block"/>
|
|
||||||
<path d="m-101.789 16.832 210.317-98.614 8.268 18.054-214.415 89.649z" transform="translate(981.847 640.913)" style="display:block"/>
|
|
||||||
<path d="m-165.267 36.82 324.014-66.518 4.06 20.75-326.033 56.216z" transform="translate(981.847 640.913)" style="display:block"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g mask="url(#p)" style="display:block">
|
|
||||||
<g clip-path="url(#q)" transform="rotate(120 689.283 205.728)">
|
|
||||||
<path d="m26.6-48.803-69.413 93.109-5.881-7.184 62.386-93.517z" transform="translate(990.142 584.502)" style="display:block"/>
|
|
||||||
<path d="M-69.58 28.086 57.952-72.23l11.212 14.81-133.09 92.966z" transform="translate(988.235 608.382)" style="display:block"/>
|
|
||||||
<path d="m-101.789 16.832 210.317-98.614 8.268 18.054-214.415 89.649z" transform="translate(981.847 640.913)" style="display:block"/>
|
|
||||||
<path d="m-165.267 36.82 324.014-66.518 4.06 20.75-326.033 56.216z" transform="translate(981.847 640.913)" style="display:block"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g mask="url(#r)" style="display:block">
|
|
||||||
<g clip-path="url(#s)" transform="rotate(-120 520.37 615.193)">
|
|
||||||
<path d="m26.6-48.803-69.413 93.109-5.881-7.184 62.386-93.517z" transform="translate(990.142 584.502)" style="display:block"/>
|
|
||||||
<path d="M-69.58 28.086 57.952-72.23l11.212 14.81-133.09 92.966z" transform="translate(988.235 608.382)" style="display:block"/>
|
|
||||||
<path d="m-101.789 16.832 210.317-98.614 8.268 18.054-214.415 89.649z" transform="translate(981.847 640.913)" style="display:block"/>
|
|
||||||
<path d="m-165.267 36.82 324.014-66.518 4.06 20.75-326.033 56.216z" transform="translate(981.847 640.913)" style="display:block"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 9.0 KiB |
25
public/svgs/audiobookshelf.svg
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<svg version="1.1" id="prefix__Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 1235.7 1235.4"
|
||||||
|
xml:space="preserve">
|
||||||
|
<style>
|
||||||
|
.prefix__st0 {
|
||||||
|
fill: #fff
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<g id="prefix__Layer_2_1_">
|
||||||
|
<g id="prefix__Layer_2-2">
|
||||||
|
<g id="prefix__Layer_4">
|
||||||
|
<circle class="prefix__st0" cx="618.6" cy="618.6" r="618.6" id="prefix__Layer_5" />
|
||||||
|
<linearGradient id="prefix__SVGID_1_" gradientUnits="userSpaceOnUse" x1="617.37" y1="1257.3" x2="617.37"
|
||||||
|
y2="61.44" gradientTransform="matrix(1 0 0 -1 0 1278)">
|
||||||
|
<stop offset=".32" stop-color="#cd9d49" />
|
||||||
|
<stop offset=".99" stop-color="#875d27" />
|
||||||
|
</linearGradient>
|
||||||
|
<circle cx="617.4" cy="618.6" r="597.9" fill="url(#prefix__SVGID_1_)" />
|
||||||
|
</g>
|
||||||
|
<path class="prefix__st0"
|
||||||
|
d="M1005.6 574.1c-4.8-4-12.4-10-22.6-17v-79.2c0-201.9-163.7-365.6-365.6-365.6-201.9 0-365.6 163.7-365.6 365.6v79.2c-10.2 7-17.7 13-22.6 17-4.1 3.4-6.5 8.5-6.5 13.9v94.9c0 5.4 2.4 10.5 6.5 14 11.3 9.4 37.2 29.1 77.5 49.3v9.2c0 24.9 16 45 35.8 45 19.8 0 35.8-20.2 35.8-45V527.8c0-24.9-16-45-35.8-45-19 0-34.5 18.5-35.8 41.9h-.1v-46.9c0-171.6 139.1-310.7 310.7-310.7C789 167.2 928 306.3 928 477.9v46.9c-1.3-23.4-16.8-41.9-35.8-41.9-19.8 0-35.8 20.2-35.8 45v227.6c0 24.9 16 45 35.8 45 19.8 0 35.8-20.2 35.8-45v-9.2c40.3-20.2 66.2-39.9 77.5-49.3 4.2-3.5 6.5-8.6 6.5-14v-95c.1-5.4-2.3-10.5-6.4-13.9z" />
|
||||||
|
<path class="prefix__st0"
|
||||||
|
d="M489.9 969.7c23.9 0 43.3-19.4 43.3-43.3V441.6c0-23.9-19.4-43.3-43.3-43.3h-44.7c-23.9 0-43.3 19.4-43.3 43.3v484.8c0 23.9 19.4 43.3 43.3 43.3h44.7zm-71.7-455.1h98.7v10.3h-98.7v-10.3zM639.7 969.7c23.9 0 43.3-19.4 43.3-43.3V441.6c0-23.9-19.4-43.3-43.3-43.3H595c-23.9 0-43.3 19.4-43.3 43.3v484.8c0 23.9 19.4 43.3 43.3 43.3h44.7zM568 514.6h98.7v10.3H568v-10.3zM789.6 969.7c23.9 0 43.3-19.4 43.3-43.3V441.6c0-23.9-19.4-43.3-43.3-43.3h-44.7c-23.9 0-43.3 19.4-43.3 43.3v484.8c0 23.9 19.4 43.3 43.3 43.3h44.7zm-71.7-455.1h98.7v10.3h-98.7v-10.3zM327.1 984.7h580.5c18 0 32.6 14.6 32.6 32.6s-14.6 32.6-32.6 32.6H327.1c-18 0-32.6-14.6-32.6-32.6s14.6-32.6 32.6-32.6z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
BIN
public/svgs/azimutt.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/svgs/bookstack.png
Normal file
|
After Width: | Height: | Size: 5.6 KiB |
@@ -1,7 +0,0 @@
|
|||||||
<svg width="47" height="30" viewBox="0 0 47 30" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M38.7759 14.1873C38.5379 14.1873 38.7759 14.1873 38.7759 14.1873C38.7759 6.60302 31.8594 0 24.0793 0C18.3479 0 13.236 3.37708 11.0359 8.16627C10.9594 8.16474 11.0363 8.16474 10.9594 8.16474C4.91834 8.16474 0 13.4481 0 19.3371C0 23.5291 1.79123 26.7912 5.40029 28.5334C5.97588 27.949 7.40249 27.9389 8.13884 27.5428C6.84539 27.1249 5.79299 26.2659 4.66867 25.4489C0.803302 22.6401 1.38287 15.7952 3.91798 13.4851C7.97916 9.78429 12.4979 10.7237 12.4979 10.7237L13.059 9.50237C13.9945 7.46591 15.8766 1.56091 24.4742 1.66552C33.5675 1.77619 36.0433 11.1473 36.0467 14.2713C36.0464 14.284 36.0463 14.2969 36.0463 14.3097L36.0415 16.517L38.2972 16.326C38.4759 16.3108 38.6533 16.3031 38.8244 16.3031C42.127 16.3031 45.4997 18.8079 45.4997 22.0274C45.4997 25.2468 42.127 27.9805 38.8244 27.9805H20.1518C20.3643 28.0866 22.5177 30 26.0633 30H38.8244C43.2765 30 46.8855 26.4818 46.8855 22.1418C46.8855 17.8019 43.228 14.1873 38.7759 14.1873Z" fill="white"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.8004 9.8463C31.95 9.53546 29.7648 9.74492 28.2297 10.3292C27.4766 10.6158 26.8793 10.9921 26.674 11.4423C26.1107 12.6779 29.5611 14.8228 30.9519 14.4284C31.6146 14.2404 32.5663 12.8654 32.9903 11.6624C33.2918 10.8073 33.3271 10.0389 32.8004 9.8463Z" fill="white"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M25.0842 10.8637C24.6901 10.8148 23.8755 10.7075 23.6155 10.4203C23.0338 9.77811 22.1014 9.60573 21.4237 9.75105C20.7054 9.90502 20.3232 10.7199 20.8163 11.7331C21.0382 12.189 20.9819 12.7384 20.7558 13.148C21.462 12.5069 22.1221 11.9844 22.6119 11.7331C23.5772 11.2382 24.4333 10.9815 25.0842 10.8637Z" fill="white"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M32.1314 20.2602C32.1314 20.2602 31.4272 22.5942 30.9343 23.6582C30.4998 24.5958 30.3622 24.5209 30.0482 24.6307C30.1662 24.34 30.2513 23.9586 30.4061 23.3149C30.5923 22.5406 30.4061 22.3368 30.4061 22.3368C30.162 23.4955 29.7824 24.3235 29.46 24.8668C29.0416 25.0032 28.5273 25.0913 28.1527 24.9452C27.6246 24.7393 27.5349 22.3195 27.5349 22.1823C29.8332 22.3368 31.0575 21.4272 32.1314 20.2602ZM20.8335 17.7094C20.8821 17.934 20.9363 18.1447 20.9929 18.349C20.9577 18.3105 20.9391 18.2896 20.9391 18.2896C20.9391 18.2896 20.9842 18.3913 21.0538 18.5659C21.1504 18.8876 21.2571 19.1817 21.3709 19.4538C21.7489 20.6371 22.1519 22.4536 21.5511 23.5925C21.1018 24.4441 15.3943 28.2867 25.1501 29.9574L33.9076 27.9808C30.0498 27.4718 31.5994 24.4504 32.5187 22.8344C33.622 20.8947 33.9986 19.6596 34.2362 17.8778C34.3792 16.8067 34.274 16.0052 34.2439 15.8123C34.2392 15.7831 34.2362 15.7669 34.2362 15.7669C34.2362 15.7669 34.232 15.8268 34.2207 15.9294L34.2362 15.6639C34.2362 15.6639 33.5397 18.3926 32.1666 19.3708C31.8471 19.5983 31.6426 19.7498 31.5115 19.8517C31.6499 19.3431 32.1686 17.1988 31.4272 16.0244C31.4272 16.0244 31.12 20.9578 28.4217 21.2197C25.7233 21.4816 21.9208 18.7903 20.8335 17.7094Z" fill="white"/>
|
|
||||||
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.0693 17.5462C12.9609 18.1371 12.9143 18.6691 12.9312 19.1378C12.4068 19.9482 8.62053 28.7229 3.91797 24.7801C4.7226 25.4678 5.40027 28.5338 5.40027 28.5338C9.82341 31.0535 12.8862 21.1715 13.2359 20.5234C13.5211 21.1173 14.0027 22.3232 16.6758 22.3769C16.6758 22.3769 13.5399 20.8782 14.9397 16.901C16.3395 12.9238 18.4087 9.54824 21.2501 7.98749C24.0914 6.42674 26.9623 6.53321 29.603 7.63149C29.603 7.63149 25.6177 4.05998 21.0383 6.75964C18.4072 8.31077 16.6555 10.0319 15.4497 11.7959C14.4386 11.9719 13.2092 11.8129 12.7108 11.8129C12.0807 11.8129 11.1087 12.2295 11.548 13.7373C11.9783 15.2138 13.1659 16.707 13.0693 17.5462Z" fill="white"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 76 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
1
public/svgs/forgejo.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 212 212" width="32" height="32"><style>circle,path{fill:none;stroke:#000;stroke-width:15}path{stroke-width:25}.orange{stroke:#f60}.red{stroke:#d40000}</style><g transform="translate(6 6)"><path d="M58 168V70a50 50 0 0 1 50-50h20" class="orange"/><path d="M58 168v-30a50 50 0 0 1 50-50h20" class="red"/><circle cx="142" cy="20" r="18" class="orange"/><circle cx="142" cy="88" r="18" class="red"/><circle cx="58" cy="180" r="18" class="red"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 503 B |
|
Before Width: | Height: | Size: 14 KiB |
@@ -1,11 +0,0 @@
|
|||||||
<svg viewBox="0 0 10817 9730" xmlns="http://www.w3.org/2000/svg" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:5.42683">
|
|
||||||
<path d="M9310.16 2560.9c245.302 249.894 419.711 539.916 565.373 845.231 47.039 98.872 36.229 215.514-28.2 304.05-64.391 88.536-172.099 134.676-280.631 120.28 0 .053-.039.053-.039.053" style="fill:gray;stroke:#000;stroke-width:206.41px"/>
|
|
||||||
<path d="M5401.56 487.044c-127.958 6.227-254.855 40.77-370.992 103.628-765.271 414.225-2397.45 1297.68-3193.03 1728.32-137.966 74.669-250.327 183.605-328.791 313.046l3963.09 2122.43s-249.048 416.428-470.593 786.926c-189.24 316.445-592.833 429.831-919.198 258.219l-2699.36-1419.32v2215.59c0 226.273 128.751 435.33 337.755 548.466 764.649 413.885 2620.97 1418.66 3385.59 1832.51 209.018 113.137 466.496 113.137 675.514 0 764.623-413.857 2620.94-1418.63 3385.59-1832.51 208.989-113.136 337.743-322.193 337.743-548.466v-3513.48c0-318.684-174.59-611.722-454.853-763.409-795.543-430.632-2427.75-1314.09-3193.02-1728.32-141.693-76.684-299.364-111.227-455.442-103.628" style="fill:#dadada;stroke:#000;stroke-width:206.42px"/>
|
|
||||||
<path d="M5471.83 4754.46V504.71c-127.958 6.226-325.127 23.1-441.264 85.958-765.271 414.225-2397.45 1297.68-3193.03 1728.32-137.966 74.669-250.327 183.605-328.791 313.046l3963.09 2122.43Z" style="fill:gray;stroke:#000;stroke-width:206.42px"/>
|
|
||||||
<path d="m1459.34 2725.96-373.791 715.667c-177.166 339.292-46.417 758 292.375 936.167l4.75 2.5m0 0 2699.37 1419.29c326.374 171.625 729.916 58.25 919.165-258.208 221.542-370.5 470.583-786.917 470.583-786.917l-3963.04-2122.42-2.167 3.458-47.25 90.458" style="fill:#dadada;stroke:#000;stroke-width:206.42px"/>
|
|
||||||
<path d="M5443.74 520.879v4149.79" style="fill:none;stroke:#000;stroke-width:153.5px"/>
|
|
||||||
<path d="M8951.41 4102.72c0-41.65-22.221-80.136-58.291-100.961-36.069-20.825-80.51-20.825-116.58 0l-2439.92 1408.69c-36.07 20.825-58.29 59.311-58.29 100.961V7058c0 41.65 22.22 80.136 58.29 100.961 36.07 20.825 80.51 20.825 116.58 0l2439.92-1408.69c36.07-20.825 58.291-59.312 58.291-100.962v-1546.59Z" style="fill:#567f67"/>
|
|
||||||
<path d="M8951.41 4102.72c0-41.65-22.221-80.136-58.291-100.961-36.069-20.825-80.51-20.825-116.58 0l-2439.92 1408.69c-36.07 20.825-58.29 59.311-58.29 100.961V7058c0 41.65 22.22 80.136 58.29 100.961 36.07 20.825 80.51 20.825 116.58 0l2439.92-1408.69c36.07-20.825 58.291-59.312 58.291-100.962v-1546.59ZM6463.98 5551.29v1387.06l2301.77-1328.92V4222.37L6463.98 5551.29Z"/>
|
|
||||||
<path d="M5443.76 9041.74v-4278.4" style="fill:none;stroke:#000;stroke-width:206.44px;stroke-linejoin:miter"/>
|
|
||||||
<path d="m5471.79 4773.86 3829.35-2188.22" style="fill:none;stroke:#000;stroke-width:206.43px;stroke-linejoin:miter"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.7 KiB |
@@ -1,66 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 28.3.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Router_Medium_x5F_Black_00000037681990313894948460000012967653829507626171_"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 792 792"
|
|
||||||
style="enable-background:new 0 0 792 792;" xml:space="preserve">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#ACCBFA;}
|
|
||||||
.st1{fill:#FA2921;}
|
|
||||||
.st2{fill:#ED79B5;}
|
|
||||||
.st3{fill:#FFB400;}
|
|
||||||
.st4{fill:#1E83F7;}
|
|
||||||
.st5{fill:#18C249;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M110.16,537.4c7.85,0,14.25,6.4,14.25,14.04c0,7.85-6.4,14.04-14.25,14.04s-14.45-6.19-14.45-14.04
|
|
||||||
C95.71,543.8,102.32,537.4,110.16,537.4z M97.98,610.7c0-3.72-0.83-9.71-0.83-13.22c0-7.43,5.78-13.22,13.01-13.22
|
|
||||||
s13.01,5.78,13.01,13.22c0,3.51-1.03,9.5-1.03,13.22v47.9c0,3.72,1.03,9.71,1.03,13.22c0,7.43-5.78,13.22-13.01,13.22
|
|
||||||
s-13.01-5.78-13.01-13.22c0-3.51,0.83-9.5,0.83-13.22V610.7z"/>
|
|
||||||
<path class="st0" d="M265.44,671.82c0-3.51,1.03-9.5,1.03-13.22v-35.72c0-12.6-6.61-20.85-17.96-20.85
|
|
||||||
c-7.43,0-14.04,3.72-18.38,10.94c0.41,2.27,0.62,4.54,0.62,7.02v38.61c0,3.72,1.03,9.71,1.03,13.22c0,7.43-5.78,13.22-13.22,13.22
|
|
||||||
c-6.81,0-12.8-5.78-12.8-13.22c0-3.51,1.03-9.5,1.03-13.22v-36.34c0-3.92-0.62-7.43-2.06-10.53c-2.69-5.99-8.05-9.71-15.49-9.71
|
|
||||||
c-7.64,0-13.83,3.92-18.38,10.94v45.63c0,3.72,1.03,9.71,1.03,13.22c0,7.43-5.99,13.22-13.01,13.22c-7.23,0-13.01-5.78-13.01-13.22
|
|
||||||
c0-3.51,0.83-9.5,0.83-13.22v-47.7c0-3.72-1.86-10.32-1.86-13.42c0-7.43,5.37-13.22,12.6-13.22c6.81,0,10.74,4.54,11.98,10.53
|
|
||||||
c6.19-8.26,14.87-13.42,26.22-13.42c13.42,0,23.13,6.4,29.11,16.73c6.81-10.74,16.73-16.73,29.11-16.73
|
|
||||||
c20.86,0,36.75,15.07,36.75,39.23v37.99c0,3.72,0.83,9.71,0.83,13.22c0,7.43-5.57,13.22-13.01,13.22
|
|
||||||
C271.43,685.04,265.44,679.26,265.44,671.82z"/>
|
|
||||||
<path class="st0" d="M431.45,671.82c0-3.51,1.03-9.5,1.03-13.22v-35.72c0-12.6-6.61-20.85-17.96-20.85
|
|
||||||
c-7.43,0-14.04,3.72-18.38,10.94c0.41,2.27,0.62,4.54,0.62,7.02v38.61c0,3.72,1.03,9.71,1.03,13.22c0,7.43-5.78,13.22-13.22,13.22
|
|
||||||
c-6.82,0-12.8-5.78-12.8-13.22c0-3.51,1.03-9.5,1.03-13.22v-36.34c0-3.92-0.62-7.43-2.06-10.53c-2.68-5.99-8.05-9.71-15.49-9.71
|
|
||||||
c-7.64,0-13.83,3.92-18.38,10.94v45.63c0,3.72,1.03,9.71,1.03,13.22c0,7.43-5.99,13.22-13.01,13.22c-7.23,0-13.01-5.78-13.01-13.22
|
|
||||||
c0-3.51,0.83-9.5,0.83-13.22v-47.7c0-3.72-1.86-10.32-1.86-13.42c0-7.43,5.37-13.22,12.6-13.22c6.82,0,10.74,4.54,11.98,10.53
|
|
||||||
c6.2-8.26,14.87-13.42,26.22-13.42c13.42,0,23.13,6.4,29.11,16.73c6.81-10.74,16.72-16.73,29.11-16.73
|
|
||||||
c20.86,0,36.75,15.07,36.75,39.23v37.99c0,3.72,0.83,9.71,0.83,13.22c0,7.43-5.57,13.22-13.01,13.22
|
|
||||||
C437.44,685.04,431.45,679.26,431.45,671.82z"/>
|
|
||||||
<path class="st0" d="M491.33,537.4c7.85,0,14.25,6.4,14.25,14.04c0,7.85-6.4,14.04-14.25,14.04s-14.45-6.19-14.45-14.04
|
|
||||||
C476.87,543.8,483.48,537.4,491.33,537.4z M479.15,610.7c0-3.72-0.83-9.71-0.83-13.22c0-7.43,5.78-13.22,13.01-13.22
|
|
||||||
s13.01,5.78,13.01,13.22c0,3.51-1.03,9.5-1.03,13.22v47.9c0,3.72,1.03,9.71,1.03,13.22c0,7.43-5.78,13.22-13.01,13.22
|
|
||||||
s-13.01-5.78-13.01-13.22c0-3.51,0.83-9.5,0.83-13.22V610.7z"/>
|
|
||||||
<path class="st0" d="M522.09,634.04c0-29.11,18.17-52.65,48.32-52.65c15.9,0,30.56,7.23,37.17,17.97c2.48,3.92,2.89,6.19,2.89,8.05
|
|
||||||
c0,6.4-4.96,11.77-12.18,11.77c-4.75,0-9.08-2.68-10.94-7.43c-2.89-6.4-8.47-10.12-16.93-10.12c-15.9,0-24.78,14.25-24.78,32.21
|
|
||||||
c0,18.17,9.29,32.21,25.4,32.21c8.67,0,14.87-3.1,17.76-9.5c2.06-4.34,5.99-8.05,11.36-8.05c7.43,0,11.98,5.16,11.98,11.56
|
|
||||||
c0,3.1-1.24,6.81-3.92,10.32c-6.82,9.09-19.62,16.31-37.17,16.31C540.06,686.69,522.09,663.56,522.09,634.04z"/>
|
|
||||||
<path class="st0" d="M690.17,671.82c0-3.51,0.83-9.5,0.83-13.22v-35.3c0-12.6-7.02-21.27-19-21.27c-8.26,0-15.28,3.92-19.82,10.32
|
|
||||||
v46.25c0,3.72,0.83,9.71,0.83,13.22c0,7.43-5.78,13.22-13.01,13.22s-13.01-5.78-13.01-13.22c0-3.51,1.03-9.5,1.03-13.22v-99.94
|
|
||||||
c0-3.72-1.03-9.71-1.03-13.22c0-7.43,5.99-13.22,13.01-13.22c7.23,0,13.01,5.78,13.01,13.22c0,3.51-0.83,9.5-0.83,13.22v33.66
|
|
||||||
c6.2-6.81,15.07-10.94,26.43-10.94c21.27,0,36.55,15.9,36.55,38.61v38.61c0,3.72,1.03,9.71,1.03,13.22
|
|
||||||
c0,7.43-5.99,13.22-13.01,13.22C695.95,685.04,690.17,679.26,690.17,671.82z"/>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
<path class="st1" d="M376.76,216.42c28.32,25.07,51.15,51.95,65.83,77.27c25.23-45.12,42.08-98.73,42.3-132.88
|
|
||||||
c0-0.24,0-0.46,0-0.66c0-50.53-50.41-70.2-93.82-70.2s-93.82,19.66-93.82,70.2c0,0.69,0,1.62,0,2.73
|
|
||||||
C321.44,173.62,350.14,192.84,376.76,216.42z"/>
|
|
||||||
<path class="st2" d="M222.27,354.21c17.7-19.69,44.85-41.04,75.5-59.08c32.6-19.19,65.21-32.59,93.83-38.73
|
|
||||||
c-35.11-37.94-80.89-70.53-113.31-81.29c-0.23-0.07-0.44-0.14-0.63-0.21c-48.06-15.61-82.34,26.25-95.75,67.54
|
|
||||||
c-13.42,41.29-10.29,95.31,37.77,110.92C220.33,353.58,221.21,353.86,222.27,354.21z"/>
|
|
||||||
<path class="st3" d="M600.73,241.74c-13.42-41.29-47.69-83.15-95.75-67.54c-0.66,0.21-1.54,0.5-2.6,0.84
|
|
||||||
c-2.75,26.34-12.16,59.57-26.36,92.17c-15.09,34.68-33.6,64.69-53.14,86.48c50.7,10.05,106.9,9.52,139.45-0.83
|
|
||||||
c0.23-0.07,0.44-0.14,0.63-0.21C611.02,337.05,614.15,283.03,600.73,241.74z"/>
|
|
||||||
<path class="st4" d="M348.22,394.58c-8.17-36.93-10.84-72.09-7.84-101.2c-46.93,21.67-92.08,55.14-112.33,82.64
|
|
||||||
c-0.14,0.19-0.27,0.37-0.39,0.54c-29.7,40.88-0.48,86.42,34.64,111.94s87.46,39.24,117.16-1.64c0.41-0.56,0.95-1.31,1.6-2.21
|
|
||||||
C367.81,461.72,355.9,429.3,348.22,394.58z"/>
|
|
||||||
<path class="st5" d="M554.19,373.91c-25.9,5.53-60.41,6.84-95.81,3.42c-37.65-3.64-71.91-11.96-98.67-23.82
|
|
||||||
c6.11,51.33,23.99,104.61,43.89,132.37c0.14,0.19,0.27,0.37,0.39,0.54c29.7,40.88,82.04,27.16,117.16,1.64S585.5,417,555.8,376.12
|
|
||||||
C555.39,375.56,554.85,374.81,554.19,373.91z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 5.5 KiB |
BIN
public/svgs/joplin.png
Normal file
|
After Width: | Height: | Size: 5.3 KiB |
55
public/svgs/keycloak.svg
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<svg viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip-path">
|
||||||
|
<path class="cls-1" d="M.02-.02H128v127.98H.02z" />
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip-path-3">
|
||||||
|
<path class="cls-1" d="M428 245.69h-9.77a.42.42 0 0 1-.33-.17l-.76-1-2.14-2.82-5.68-7.7-3.18-4.28a.41.41 0 0 0-.63 0l-3.33 3.71-.38.43a.4.4 0 0 0-.1.27v11.16a.41.41 0 0 1-.41.41h-8.42a.41.41 0 0 1-.41-.41v-40.55a.4.4 0 0 1 .41-.41h8.42a.41.41 0 0 1 .41.41v15.53a.4.4 0 0 0 .7.28l4.65-5L414 208l3.24-3.52a.41.41 0 0 1 .3-.13h10.34a.4.4 0 0 1 .41.42.46.46 0 0 1-.1.25l-4.66 5.17-7.74 8.61-3.23 3.58a.4.4 0 0 0 0 .5l4 5.63 3.66 5.16.45.63 2.77 3.88 2.89 4.06 2 2.82a.41.41 0 0 1-.33.63zm-38.72-.57a.41.41 0 0 1-.37.57h-8.94a.4.4 0 0 1-.37-.25l-.18-.4-3.46-8a.4.4 0 0 0-.37-.25h-16.8a.41.41 0 0 0-.38.25l-.52 1.2-3.12 7.25a.41.41 0 0 1-.36.23h-8.94a.41.41 0 0 1-.37-.57l.62-1.44 4.22-9.76.15-.34.18-.41.08-.2 1.4-3.25 10.84-25.09a.41.41 0 0 1 .37-.25h8.4a.4.4 0 0 1 .37.25l5.64 13 2.79 6.44 3.12 7.21 5.9 13.66zm-17.16-17-.59-1.38-2-4.63-2-4.57a.41.41 0 0 0-.75 0l-3.51 8.11-1.07 2.48a.4.4 0 0 0 .37.56h9.13a.4.4 0 0 0 .37-.61zm-26.51 4.66a17.7 17.7 0 0 1-.83 1.84 20.76 20.76 0 0 1-4 5.37 22.08 22.08 0 0 1-2.26 1.94 21 21 0 0 1-11.68 4.14h-1.51a21.6 21.6 0 0 1-12.1-3.42 22 22 0 0 1-3.34-2.7c-.41-.41-.81-.82-1.18-1.24a20.43 20.43 0 0 1-5.1-14 23.47 23.47 0 0 1 .27-3.6l-.19-.28.3-.45a20.05 20.05 0 0 1 5.89-10.91A22 22 0 0 1 313 207a20.33 20.33 0 0 1 7.39-3.09 23.77 23.77 0 0 1 4.92-.49 21.25 21.25 0 0 1 15.45 6.13 20.25 20.25 0 0 1 6.17 12.94c.07.74.1 1.51.1 2.28a21.76 21.76 0 0 1-1.47 7.97zm-8-8a13.54 13.54 0 0 0-3.18-9 5.22 5.22 0 0 0-.36-.43 11.34 11.34 0 0 0-8.73-3.9 12.49 12.49 0 0 0-2.67.28 11.4 11.4 0 0 0-6.06 3.62 13.44 13.44 0 0 0-3.55 9.12v.32a13.41 13.41 0 0 0 3.56 9.41 11.78 11.78 0 0 0 1.07 1 11.35 11.35 0 0 0 2.33 1.6 12.09 12.09 0 0 0 10.81-.09 11.76 11.76 0 0 0 2.87-2.18l.36-.38a13.42 13.42 0 0 0 2-2.83 13.84 13.84 0 0 0 1.53-6.55zm-34.51 12.69h-16.85a.4.4 0 0 1-.41-.4v-32.33a.4.4 0 0 0-.23-.36.35.35 0 0 0-.17 0H277a.4.4 0 0 0-.41.41v40.55a.41.41 0 0 0 .41.41h26a.41.41 0 0 0 .41-.41v-7.42a.41.41 0 0 0-.34-.46zm-45.76-34c-.67-.05-1.34-.08-2-.08a21.24 21.24 0 0 0-15.42 6.15 22.18 22.18 0 0 0-2.08 2.35 20.67 20.67 0 0 0-4.22 13 22.27 22.27 0 0 0 1.35 7.89 19.26 19.26 0 0 0 2.08 4.05 20.42 20.42 0 0 0 2.74 3.28 20.93 20.93 0 0 0 4.13 3.14c.37.21.75.42 1.13.61.38.19.56.27.85.39a23.61 23.61 0 0 0 9.6 1.88 21.39 21.39 0 0 0 3.07-.22c.64-.09 1.27-.21 1.9-.36a21.44 21.44 0 0 0 9.63-5.32c.58-.54 1.16-1.12 1.73-1.74a.41.41 0 0 0 0-.56l-5.34-5.49a.39.39 0 0 0-.36-.12.44.44 0 0 0-.24.14 13.55 13.55 0 0 1-10.84 5 12.05 12.05 0 0 1-4.18-.71 11.73 11.73 0 0 1-4.28-2.79 11.29 11.29 0 0 1-2.7-4.3 14.68 14.68 0 0 1-.79-5 12 12 0 0 1 3.21-8.7l.49-.47a12.68 12.68 0 0 1 8.91-3.4 13.35 13.35 0 0 1 10.59 5.08.4.4 0 0 0 .61 0l5.19-5.89a.42.42 0 0 0 0-.55 21.73 21.73 0 0 0-14.78-7.27zm-23.34 4.2 1.57-2.74a.4.4 0 0 0-.35-.61h-9.07a.41.41 0 0 0-.35.2l-8.22 14.15-.44.32-.33.25a.42.42 0 0 1-.17-.16l-.14-.23-.21-.35-8.12-14a.41.41 0 0 0-.35-.2h-9.07a.41.41 0 0 0-.35.61l3.93 6.88 7.12 12.44 2.87 5a.41.41 0 0 1 .06.2v15.82a.41.41 0 0 0 .41.41h8.42a.41.41 0 0 0 .41-.41v-15.79a.41.41 0 0 1 .06-.2l2-3.55 7.7-13.46 1.57-2.74 1-1.83zm-38.85 29.85H174.7a.41.41 0 0 1-.41-.41v-7.77a.41.41 0 0 1 .41-.41h17.71a.41.41 0 0 0 .41-.41v-7.06a.41.41 0 0 0-.41-.41H174.7a.41.41 0 0 1-.41-.41V213a.41.41 0 0 1 .41-.41h19.78a.41.41 0 0 0 .41-.41v-7.41a.41.41 0 0 0-.41-.41h-29a.4.4 0 0 0-.41.41v40.55a.41.41 0 0 0 .41.41h29.66a.41.41 0 0 0 .41-.41v-7.36a.41.41 0 0 0-.42-.44zm-34.82 7-3.84-5.38-3.93-5.52-.14-.21q-5.38-7.57-7.54-10.58a.4.4 0 0 1 0-.5l3.69-4.09 3-3.37 2.92-3.24 6-6.66a.4.4 0 0 0-.3-.67h-10.31a.41.41 0 0 0-.3.13l-6.4 7-8.4 9.13a.4.4 0 0 1-.7-.28v-15.55a.4.4 0 0 0-.41-.4h-8.42a.4.4 0 0 0-.41.41v40.55a.41.41 0 0 0 .41.41h8.42a.41.41 0 0 0 .41-.41v-11.16a.4.4 0 0 1 .1-.27l1.75-2 2-2.17a.41.41 0 0 1 .63 0l5.84 7.85 4.19 5.65 1.68 2.27a.4.4 0 0 0 .32.17h9.78a.41.41 0 0 0 .33-.65zM120 204.28H33.93a.78.78 0 0 0-.66.37l-.43.74-5.27 9.13-5.82 10.09a.76.76 0 0 0 0 .76l1.25 2.21 10.25 17.76a.77.77 0 0 0 .67.39H120a.85.85 0 0 0 .85-.85v-39.74a.86.86 0 0 0-.85-.86Z" id="path1576" />
|
||||||
|
</clipPath>
|
||||||
|
<linearGradient id="linear-gradient" x1="20.71" y1="225.61" x2="430.83" y2="225.61" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" stop-color="#e6e6e6" id="stop1579" />
|
||||||
|
<stop offset="1" stop-color="#595959" id="stop1581" />
|
||||||
|
</linearGradient>
|
||||||
|
<style id="style2007">.cls-1{fill:none}</style>
|
||||||
|
</defs>
|
||||||
|
<g id="g2460" transform="translate(.714 .07)">
|
||||||
|
<path d="M105.69 41.25a.76.76 0 0 1-.66-.38l-11.51-20a.78.78 0 0 0-.67-.38h-47a.76.76 0 0 0-.66.38l-12 20.71 4.625 6.774c-.134.236-1.199 4.644-1.065 4.88L33.19 82.29l12 20.73a.76.76 0 0 0 .66.38h47a.78.78 0 0 0 .67-.38l11.52-20a.76.76 0 0 1 .66-.38H120a.86.86 0 0 0 .86-.86V42.11a.86.86 0 0 0-.86-.86z" id="path1588" style="fill:#4d4d4d;clip-path:url(#clip-path)" clip-path="url(#clip-path)" transform="matrix(1.2527 0 0 1.2527 -23.058 -13.67)" />
|
||||||
|
<g clip-path="url(#clip-path-3)" id="g1592" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#4d4d4d">
|
||||||
|
<path id="rect1590" style="display:inline;fill:url(#linear-gradient)" d="M20.71 197.91h99.111v52.823H20.71z" />
|
||||||
|
</g>
|
||||||
|
<path d="m21.876 61.343-16.122 5.85-1.591-2.743a.952.952 0 0 1 0-.952l7.29-12.64z" id="path1594" style="fill:#e1e1e1;stroke-width:1.2527" />
|
||||||
|
<path class="cls-62" id="polygon1794" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#c8c8c8" d="M120.89 225.43v9.83l-8.48-8.62z" />
|
||||||
|
<path class="cls-61" d="m117.757 66.016 10.623 10.798v12.039a1.065 1.065 0 0 1-1.064 1.065H114.95z" id="path1798" style="fill:#c2c2c2;stroke-width:1.2527" />
|
||||||
|
<path class="cls-63" id="polygon1802" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#c7c7c7" d="m112.41 226.64-2.24 19.08H98.31l-3.59-8.66z" />
|
||||||
|
<path class="cls-64" id="polygon1804" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#cecece" d="M120.89 216.31v9.12l-8.48 1.21z" />
|
||||||
|
<path class="cls-65" d="M128.38 39.083v13.993l-10.622 12.927-8.03-27.997h17.538a1.077 1.077 0 0 1 1.114 1.077z" id="path1808" style="fill:#d3d3d3;stroke-width:1.2527" />
|
||||||
|
<path class="cls-58" id="polygon1812" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#c6c6c6" d="M98.31 245.72h-6.26l-1.62-2.33 4.29-6.33z" />
|
||||||
|
<path class="cls-66" id="polygon1814" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#d5d5d5" d="m112.41 226.64-23.47-9.93 12.34-12.43h4.73z" />
|
||||||
|
<path class="cls-67" d="m88.357 53.577 7.24 25.492 22.16-13.066Z" id="path1816" style="fill:#d0d0d0;stroke-width:1.2527" />
|
||||||
|
<path class="cls-50" id="polygon1818" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#bfbfbf" d="m90.36 245.72.07-2.33 1.62 2.33z" />
|
||||||
|
<path class="cls-68" id="polygon1820" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#d9d9d9" d="m101.28 204.28-12.34 12.43-2.23-11.12 4.77-1.31z" />
|
||||||
|
<path class="cls-69" d="m88.357 53.577-35.69 8.23 37.581 25.192Z" id="path1822" style="fill:#d4d4d4;stroke-width:1.2527" />
|
||||||
|
<path class="cls-67" d="m88.357 53.577 1.866 33.422 5.362-7.93z" id="path1824" style="fill:#d0d0d0;stroke-width:1.2527" />
|
||||||
|
<path class="cls-68" d="m85.563 39.647-32.896 22.16 35.69-8.23Z" id="path1826" style="fill:#d9d9d9;stroke-width:1.2527" />
|
||||||
|
<path class="cls-70" id="polygon1828" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#d8d8d8" d="M60.45 223.28 48.1 245.72h-7.03l-5.2-22.81z" />
|
||||||
|
<path class="cls-71" d="M36.82 38.006 21.877 61.343 18.118 39.41l.538-.927a.977.977 0 0 1 .827-.464h17.338z" id="path1830" style="fill:#e2e2e2;stroke-width:1.2527" />
|
||||||
|
<path class="cls-70" d="M28.39 89.918h-8.944a.965.965 0 0 1-.84-.489L5.754 67.194l16.122-5.85Z" id="path1832" style="fill:#d8d8d8;stroke-width:1.2527" />
|
||||||
|
<path class="cls-72" id="polygon1834" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#e4e4e4" d="m27.56 214.53 5.27-9.13 3.04 17.51z" />
|
||||||
|
<path class="cls-73" id="polygon1836" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#dedede" d="m86.71 205.59-7.91-1.31H52.67l7.78 19z" />
|
||||||
|
<path class="cls-73" id="polygon1838" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#dedede" d="m60.45 223.28-7.78-19H47.8l-11.93 18.63z" />
|
||||||
|
<path class="cls-74" id="polygon1840" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#c5c5c5" d="M84.72 245.72H90.36l.07-2.33z" />
|
||||||
|
<path class="cls-67" id="polygon1842" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#d0d0d0" d="M73.47 245.72h11.25l5.71-2.33-29.98-20.11 5.4 22.44z" />
|
||||||
|
<path class="cls-75" id="polygon1844" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#d1d1d1" d="m65.85 245.72-5.4-22.44-12.35 22.44h17.15z" />
|
||||||
|
<path class="cls-78" id="polygon1856" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#ddd" d="m86.79 204.28-.08 1.31 4.77-1.31H89.3z" />
|
||||||
|
<path class="cls-79" id="polygon1858" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#e3e3e3" d="m86.71 205.59-.73-1.31H78.8z" />
|
||||||
|
<path class="cls-71" id="polygon1860" transform="matrix(1.2527 0 0 1.2527 -23.058 -217.896)" style="fill:#e2e2e2" d="m86.71 205.59.08-1.31h-.81z" />
|
||||||
|
<path class="cls-80" d="M58.58 38.457 44.074 63.573a.84.84 0 0 0-.1.414H33.851L53.757 29.5a.79.79 0 0 1 .3.288l4.51 7.842a.864.864 0 0 1 .013.827z" id="path1862" style="fill:#00b8e3;stroke-width:1.2527" />
|
||||||
|
<path class="cls-81" d="m58.567 90.394-4.51 7.804a.877.877 0 0 1-.3.288L33.84 63.962h10.122a.777.777 0 0 0 .1.388l14.481 25.054a.852.852 0 0 1 .025.99z" id="path1864" style="fill:#33c6e9;stroke-width:1.2527" />
|
||||||
|
<path class="cls-82" d="M53.757 29.5 33.852 63.962l-5.011 8.656-4.76-8.268a.777.777 0 0 1-.1-.388.84.84 0 0 1 .1-.414l4.835-8.355 14.67-25.38a.852.852 0 0 1 .738-.438h9.032a.89.89 0 0 1 .401.125z" id="path1866" style="fill:#008aaa;stroke-width:1.2527" />
|
||||||
|
<path class="cls-80" d="M53.757 98.486a.89.89 0 0 1-.426.113h-9.007a.852.852 0 0 1-.739-.439L30.181 74.948l-1.328-2.305 5.011-8.656Z" id="path1868" style="fill:#00b8e3;stroke-width:1.2527" />
|
||||||
|
<path class="cls-82" d="M93.793 63.962 73.875 98.46a.927.927 0 0 1-.3-.288l-4.51-7.817a.864.864 0 0 1 0-.802l14.481-25.129a.84.84 0 0 0 .126-.438h10.121Z" id="path1870" style="fill:#008aaa;stroke-width:1.2527" />
|
||||||
|
<path class="cls-80" d="M103.64 63.962a.84.84 0 0 1-.126.438L84.01 98.223a.852.852 0 0 1-.727.4h-8.982a.927.927 0 0 1-.438-.112l19.93-34.55 5.011-8.643 4.735 8.218a.84.84 0 0 1 .1.426z" id="path1872" style="fill:#00b8e3;stroke-width:1.2527" />
|
||||||
|
<path class="cls-80" d="M93.793 63.962H83.66a.84.84 0 0 0-.125-.426L69.053 38.482a.852.852 0 0 1 0-.865l4.51-7.817a.927.927 0 0 1 .3-.288z" id="path1874" style="fill:#00b8e3;stroke-width:1.2527" />
|
||||||
|
<path class="cls-81" d="m98.78 55.33-5.012 8.644L73.85 29.487a.927.927 0 0 1 .439-.112h9.007a.852.852 0 0 1 .726.4z" id="path1876" style="fill:#33c6e9;stroke-width:1.2527" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 11 KiB |
@@ -1,67 +0,0 @@
|
|||||||
<svg cursor="default" enable-background="new" height="512" viewBox="0 0 440 440" width="512"
|
|
||||||
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
|
||||||
<radialGradient id="a" cx="611" cy="41.266644"
|
|
||||||
gradientTransform="matrix(1.1673343 0 0 1.4196623 -102.24121 -19.722475)"
|
|
||||||
gradientUnits="userSpaceOnUse" r="160.5">
|
|
||||||
<stop offset="0" stop-color="#01fd00" />
|
|
||||||
<stop offset="1" stop-color="#009d39" />
|
|
||||||
</radialGradient>
|
|
||||||
<radialGradient id="b" cx="873.78265" cy="-16.37981"
|
|
||||||
gradientTransform="matrix(1.9295131 -1.1140049 1.1550268 2.0005649 -1087.6858 1104.8947)"
|
|
||||||
gradientUnits="userSpaceOnUse" r="55.747124">
|
|
||||||
<stop offset="0" stop-color="#f9f9f9" />
|
|
||||||
<stop offset="1" stop-color="#fff" />
|
|
||||||
</radialGradient>
|
|
||||||
<linearGradient id="c" gradientUnits="userSpaceOnUse" x1="611.14288" x2="610.57141"
|
|
||||||
y1="234.57143" y2="-110.91601">
|
|
||||||
<stop offset="0" stop-color="#f2f2f2" />
|
|
||||||
<stop offset="1" stop-color="#f2f2f2" />
|
|
||||||
</linearGradient>
|
|
||||||
<g transform="translate(-390.56693 181.56689)">
|
|
||||||
<g>
|
|
||||||
<path d="m391.020508-182.838852h439.95895v439.95895h-439.95895z" fill="#fff"
|
|
||||||
stroke="#58dd58" stroke-linejoin="round" stroke-width=".040996" visibility="hidden" />
|
|
||||||
<circle cx="611" cy="38" fill="url(#c)" r="187.776825" />
|
|
||||||
<circle cx="611" cy="38" fill="url(#a)" r="166.285645" stroke="#fff"
|
|
||||||
stroke-linejoin="round" stroke-width="3" />
|
|
||||||
<path d="m571.156433 108.308197 110-63.999998-110-64z" fill="url(#b)"
|
|
||||||
fill-rule="evenodd" />
|
|
||||||
</g>
|
|
||||||
<g fill="#c7efc4" fill-rule="evenodd">
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(-.83616052 -.5484848 .5484848 -.83616052 0 0)" width="14"
|
|
||||||
x="-542.46875" y="419.410309" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(-.45720822 -.88935968 .88935968 -.45720822 0 0)" width="14"
|
|
||||||
x="-320.158203" y="642.978027" />
|
|
||||||
<rect height="41" opacity=".5" ry="9" transform="rotate(-90)" width="18" x="-48.536366"
|
|
||||||
y="718.754395" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(.47159375 -.88181593 .88181593 .47159375 0 0)" width="14"
|
|
||||||
x="244.405457" y="673.798523" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(-.8503618 .52619845 -.52619845 -.8503618 0 0)" width="14"
|
|
||||||
x="-505.884949" y="-503.867859" />
|
|
||||||
<rect height="41" opacity=".5" ry="9" transform="scale(-1)" width="18" x="-620.297424"
|
|
||||||
y="-187.942719" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(-.84033379 -.54206929 .54206929 -.84033379 0 0)" width="14"
|
|
||||||
x="-539.16571" y="148.581909" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(-.45720822 -.88935968 .88935968 -.45720822 0 0)" width="14"
|
|
||||||
x="-319.728088" y="374.804901" />
|
|
||||||
<rect height="41" opacity=".5" ry="9" transform="rotate(-90)" width="18" x="-48.536366"
|
|
||||||
y="460.964569" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(.47159375 -.88181593 .88181593 .47159375 0 0)" width="14"
|
|
||||||
x="250.841736" y="406.195648" />
|
|
||||||
<rect height="32" opacity=".5" ry="7"
|
|
||||||
transform="matrix(-.849305 .52790248 -.52790248 -.849305 0 0)" width="14"
|
|
||||||
x="-505.957611" y="-236.959518" />
|
|
||||||
<g transform="scale(-1)">
|
|
||||||
<rect height="41" opacity=".5" ry="9" width="18" x="-633.02533" y="69.120789" />
|
|
||||||
<rect height="41" opacity=".5" ry="9" width="18" x="-606.761353" y="69.120789" />
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 3.8 KiB |
6
public/svgs/mattermost.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="256" height="256" viewBox="0 0 256 256" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid">
|
||||||
|
<g>
|
||||||
|
<path d="M6.79123171,86.9648684 C25.2351716,32.4823178 76.783459,-1.43234143 131.421839,0.0464773399 L131.421839,0.0464773399 L113.909757,20.739032 C81.4957329,26.5997669 53.5072568,48.7337413 42.5072761,81.2287969 C26.140539,129.576353 53.572705,182.545803 103.779303,199.543648 C153.985902,216.538377 207.952658,191.12264 224.319395,142.7782 C235.283535,110.390667 226.589826,75.9306053 204.563374,51.5978814 L204.563374,51.5978814 L203.21701,24.4290666 C247.371203,56.4768925 267.622761,114.633895 249.208429,169.029181 C226.546194,235.970273 153.909545,271.865521 86.9684532,249.204844 C20.0273609,226.542609 -15.8694453,153.905961 6.79123171,86.9648684 Z M165.185344,11.9237762 C165.839826,11.6401671 166.594039,11.5793938 167.321762,11.8256038 C168.035459,12.0671391 168.585536,12.5580009 168.936152,13.1595015 L168.936152,13.1595015 L169.007833,13.2763734 L169.071723,13.4103864 C169.240019,13.7313945 169.383381,14.0991514 169.450388,14.5510559 C169.582343,15.4417519 169.641535,17.5358595 169.665634,19.6808502 L169.671365,20.2662434 C169.677102,20.9486534 169.679633,21.6256073 169.680171,22.2599793 L169.680173,22.7924325 C169.678741,24.5267431 169.663874,25.8268542 169.663874,25.8268542 L169.663874,25.8268542 L170.167202,44.7600977 L170.910507,66.6151379 L171.837691,104.59538 C171.837691,104.59538 171.83785,104.602367 171.838064,104.616156 L171.838772,104.677745 C171.838883,104.691349 171.838983,104.706608 171.839058,104.723498 L171.839105,104.844231 C171.832023,107.013302 171.387173,122.892918 160.122454,133.928662 C148.009853,145.795053 133.131285,144.708923 123.451177,141.433394 C113.771069,138.154749 101.293828,129.979951 98.8800345,113.195592 C96.8283098,98.9302108 104.41287,86.9390787 106.734401,83.6627102 L106.889339,83.4459953 C107.205256,83.0081712 107.389865,82.7777388 107.389865,82.7777388 L107.389865,82.7777388 L131.197445,53.1717559 L145.064682,36.2627333 L156.965355,21.5275276 C156.965355,21.5275276 158.715313,19.1834331 160.51647,16.874806 L160.876881,16.4142586 C161.477025,15.6498178 162.070275,14.9069442 162.593713,14.2737698 L162.898895,13.907734 C163.342593,13.3805415 163.71955,12.9564826 163.983901,12.6998055 C164.292443,12.4006135 164.608776,12.205827 164.918876,12.0546727 L164.918876,12.0546727 L165.146386,11.9393591 Z" fill="#0058CC" />
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.5 KiB |
17
public/svgs/mautic.svg
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="349.779px" height="349.779px" viewBox="0 0 349.779 349.779" enable-background="new 0 0 349.779 349.779"
|
||||||
|
xml:space="preserve">
|
||||||
|
<path fill="#FFFFFF" d="M174.89,349.779C78.612,349.779,0,271.462,0,174.89S78.612,0,174.89,0c23.26,0,45.931,4.417,67.129,13.543
|
||||||
|
c5.889,2.65,8.833,9.422,6.478,15.605c-2.649,5.888-9.421,8.833-15.604,6.477c-18.549-7.655-37.98-11.482-58.002-11.482
|
||||||
|
c-83.323,0-151.041,67.718-151.041,151.041S91.567,326.225,174.89,326.225c83.323,0,151.041-67.718,151.041-151.041
|
||||||
|
c0-17.96-2.944-35.332-9.127-51.819c-2.355-6.183,0.883-12.955,7.066-15.31c6.183-2.355,12.954,0.883,15.31,7.066
|
||||||
|
c7.066,19.138,10.6,39.453,10.6,60.063C349.779,271.167,271.462,349.779,174.89,349.779"/>
|
||||||
|
<g>
|
||||||
|
<polygon fill="#FDB933" points="251.44,156.93 224.354,185.194 239.369,248.496 273.522,248.496 "/>
|
||||||
|
</g>
|
||||||
|
<polygon fill="#FDB933" points="240.253,73.312 249.674,82.734 174.89,161.935 110.999,96.277 74.196,248.496 108.35,248.496
|
||||||
|
128.665,163.996 174.89,214.343 273.817,106.583 283.239,116.299 292.66,63.007 "/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg width="50mm" height="50mm" viewBox="0 0 50 50" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="a"><stop style="stop-color:#348878;stop-opacity:1" offset="0"/><stop style="stop-color:#56bda8;stop-opacity:1" offset="1"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="160.722" y1="128.533" x2="168.412" y2="134.326" gradientUnits="userSpaceOnUse" gradientTransform="translate(-845.726 -630.598) scale(5.59448)"/></defs><g style="display:inline"><path style="color:#000;fill:url(#b);stroke:none;stroke-width:3.72347;-inkscape-stroke:none" d="M94.237 89.912H59.499c-2.388 0-4.342 1.844-4.342 4.098l.033 27.754-.648 3.738 9.297-2.806h30.396c2.388 0 4.342-1.845 4.342-4.099V94.01c0-2.254-1.954-4.098-4.342-4.098z" transform="translate(-51.147 -81.516)"/><path style="color:#000;fill:#fff;stroke:none;stroke-width:.762343;-inkscape-stroke:none" d="M58.849 86.79c-3.62 0-6.72 2.848-6.72 6.47v.002l.035 30.273-.91 6.708 12.362-3.284h30.729c3.62 0 6.72-2.852 6.72-6.473V93.26c0-3.62-3.099-6.469-6.717-6.469h-.003zm0 4.566h35.499c1.272 0 2.151.927 2.151 1.903v27.227c0 .977-.88 1.924-2.154 1.903h-31.4l-6.28 1.898.065-.37-.035-30.658c0-.977.88-1.903 2.154-1.903z" transform="translate(-51.147 -81.516)"/><g style="font-size:8.48274px;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#000;stroke:none;stroke-width:.525121"><path style="color:#000;-inkscape-font-specification:'JetBrains Mono, Bold';fill:#fff;stroke:none;-inkscape-stroke:none" d="M62.57 116.77v-1.312l3.28-1.459q.159-.068.306-.102.158-.045.283-.068l.271-.022v-.09q-.136-.012-.271-.046-.125-.023-.283-.057-.147-.045-.306-.113l-3.28-1.459v-1.323l5.068 2.319v1.413z" transform="matrix(2.1689 0 0 2.57844 -124.28 -268.742)"/><path style="color:#000;-inkscape-font-specification:'JetBrains Mono, Bold';fill:#fff;stroke:none;-inkscape-stroke:none" d="M62.309 110.31v1.903l3.437 1.53.022.007-.022.008-3.437 1.53v1.892l.37-.17 5.221-2.39v-1.75zm.525.817 4.541 2.08v1.076l-4.541 2.078v-.732l3.12-1.389.003-.002a1.56 1.56 0 0 1 .258-.086h.006l.008-.002c.094-.027.176-.047.246-.06l.498-.041v-.574l-.24-.02a1.411 1.411 0 0 1-.231-.04l-.008-.001-.008-.002a9.077 9.077 0 0 1-.263-.053 2.781 2.781 0 0 1-.266-.097l-.004-.002-3.119-1.39z" transform="matrix(2.1689 0 0 2.57844 -124.28 -268.742)"/></g><g style="font-size:8.48274px;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#000;stroke:none;stroke-width:.525121"><path style="color:#000;-inkscape-font-specification:'JetBrains Mono, Bold';fill:#fff;stroke:none;-inkscape-stroke:none" d="M69.171 117.754h5.43v1.278h-5.43Z" transform="matrix(2.16247 0 0 2.48294 -122.76 -261.211)"/><path style="color:#000;-inkscape-font-specification:'JetBrains Mono, Bold';fill:#fff;stroke:none;-inkscape-stroke:none" d="M68.908 117.492v1.802h5.955v-1.802zm.526.524h4.904v.754h-4.904z" transform="matrix(2.16247 0 0 2.48294 -122.76 -261.211)"/></g></g></svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.9 KiB |
51
public/svgs/onedev.svg
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<svg
|
||||||
|
xmlns:svg="http://www.w3.org/2000/svg"
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
viewBox="200 200 630 630"
|
||||||
|
height="200"
|
||||||
|
width="200"
|
||||||
|
version="1.1">
|
||||||
|
<g
|
||||||
|
transform="matrix(1.969278,0,0,1.969278,522.1972,523.64867)">
|
||||||
|
<g
|
||||||
|
paint-order="stroke">
|
||||||
|
<g
|
||||||
|
transform="matrix(1.6226969,0,0,-1.6226969,2.4340454,49.894842)">
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
d="m 0,0 c 9.013,0 16.323,3.81 16.323,8.503 0,4.697 -7.31,4.663 -16.323,4.663 -9.015,0 -16.323,0.034 -16.323,-4.663 C -16.323,3.81 -9.015,0 0,0"
|
||||||
|
transform="translate(0,-6.5830035)"
|
||||||
|
paint-order="stroke"
|
||||||
|
style="opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="scale(1.6226969,-1.6226969)">
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
d="m 0,0 c -10.7,0 -19.375,-8.674 -19.375,-19.375 0,-6.235 2.958,-11.768 7.533,-15.312 -9.205,-22.861 -31.582,-39.042 -57.699,-39.042 -13.013,0 -25.101,4.021 -35.1,10.876 2.549,4.364 4.016,9.436 4.016,14.853 0,16.292 -13.208,29.5 -29.5,29.5 -0.415,0 -0.827,-0.015 -1.238,-0.031 -0.261,2.309 -0.408,4.653 -0.408,7.031 0,10.383 2.57,20.171 7.084,28.784 10.565,22.164 33.744,37.56 60.658,37.56 24.747,0 46.31,-13.023 57.838,-32.347 -1.504,-1.553 -2.434,-3.665 -2.434,-5.997 0,-4.764 3.861,-8.625 8.625,-8.625 4.764,0 8.625,3.861 8.625,8.625 0,4.088 -2.848,7.504 -6.665,8.393 -1.01,1.971 -2.089,3.902 -3.251,5.776 3.102,3.499 5.018,8.066 5.018,13.106 0,10.953 -8.882,19.832 -19.834,19.832 -5.277,0 -10.033,-2.094 -13.581,-5.459 -11.75,6.755 -25.354,10.625 -39.853,10.625 -14.169,0 -27.485,-3.705 -39.051,-10.175 -3.497,3.109 -8.082,5.009 -13.128,5.009 -10.956,0 -19.834,-8.879 -19.834,-19.832 0,-4.643 1.598,-8.91 4.273,-12.285 -7.92,-12.438 -12.533,-27.18 -12.533,-42.99 0,-4.618 0.413,-9.14 1.166,-13.547 -6.693,-5.408 -10.977,-13.679 -10.977,-22.953 0,-16.292 13.208,-29.5 29.5,-29.5 4.15,0 8.097,0.86 11.68,2.407 13.551,-10.446 30.509,-16.68 48.904,-16.68 35.091,0 64.955,22.649 75.833,54.088 7.607,2.615 13.083,9.816 13.083,18.31 C 19.375,-8.674 10.7,0 0,0"
|
||||||
|
transform="translate(70.125,11.5)"
|
||||||
|
paint-order="stroke"
|
||||||
|
style="opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="matrix(1.6226969,0,0,-1.6226969,-41.533257,-8.9250313)">
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
d="m 0,0 c 3.561,1.848 7.952,0.457 9.8,-3.105 0.127,-0.246 0.205,-0.503 0.304,-0.759 1.367,9.134 -1.382,17.072 -7.088,18.88 -6.791,2.152 -15.166,-5.181 -18.713,-16.372 -3.546,-11.195 -0.915,-22.012 5.873,-24.161 6.137,-1.944 13.562,3.878 17.552,13.287 -0.323,-0.247 -0.661,-0.482 -1.032,-0.674 -3.564,-1.85 -7.951,-0.463 -9.801,3.102 C -4.953,-6.239 -3.564,-1.85 0,0"
|
||||||
|
transform="translate(3.4126028,5.2498778)"
|
||||||
|
paint-order="stroke"
|
||||||
|
style="opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||||
|
</g>
|
||||||
|
<g
|
||||||
|
transform="matrix(1.6226969,0,0,-1.6226969,46.400783,-8.9251198)">
|
||||||
|
<path
|
||||||
|
stroke-linecap="round"
|
||||||
|
d="M 0,0 C 6.789,2.148 9.42,12.966 5.873,24.16 2.326,35.352 -6.049,42.685 -12.84,40.532 c -5.705,-1.807 -8.455,-9.746 -7.088,-18.88 0.1,0.256 0.178,0.514 0.305,0.759 1.848,3.563 6.238,4.953 9.799,3.106 3.564,-1.85 4.953,-6.24 3.105,-9.802 -1.849,-3.566 -6.236,-4.952 -9.801,-3.103 -0.371,0.193 -0.709,0.428 -1.031,0.674 C -13.563,3.878 -6.137,-1.944 0,0"
|
||||||
|
transform="translate(6.411045,-20.266777)"
|
||||||
|
paint-order="stroke"
|
||||||
|
style="opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 50 KiB |
12
public/svgs/paperless.svg
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 27.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 1000 1000" style="enable-background:new 0 0 1000 1000;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{fill:#FFFFFF;}
|
||||||
|
</style>
|
||||||
|
<path class="st0" d="M299,891.7c-4.2-19.8-12.5-59.6-13.6-59.6c-176.7-105.7-155.8-288.7-97.3-393.4
|
||||||
|
c12.5,131.8,245.8,222.8,109.8,383.9c-1.1,2,6.2,27.2,12.5,50.2c27.2-46,68-101.4,65.8-106.7C208.9,358.2,731.9,326.9,840.6,73.7
|
||||||
|
c49.1,244.8-25.1,623.5-445.5,719.7c-2,1.1-76.3,131.8-79.5,132.9c0-2-31.4-1.1-27.2-11.5C290.7,908.4,294.8,900.1,299,891.7
|
||||||
|
L299,891.7z M293.8,793.4c53.3-61.8-9.4-167.4-47.1-201.9C310.5,701.3,306.3,765.1,293.8,793.4L293.8,793.4z"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 869 B |
@@ -1,16 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024">
|
|
||||||
<title>
|
|
||||||
qbittorrent-new-light
|
|
||||||
</title>
|
|
||||||
<defs>
|
|
||||||
<linearGradient x1="34.012%" y1="0%" x2="76.373%" y2="76.805%" id="a">
|
|
||||||
<stop stop-color="#72B4F5" offset="0%"/>
|
|
||||||
<stop stop-color="#356EBF" offset="100%"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<g fill="none" fill-rule="evenodd">
|
|
||||||
<circle stroke="#DAEFFF" stroke-width="32" fill="url(#a)" cx="512" cy="512" r="496"/>
|
|
||||||
<path d="M712.898 332.399q66.657 0 103.38 45.671 37.03 45.364 37.03 128.684t-37.34 129.61q-37.03 45.98-103.07 45.98-33.02 0-60.484-12.035-27.156-12.344-45.672-37.649h-3.703l-10.8 43.512h-36.724V196h51.227v116.65q0 39.191-2.469 70.359h2.47q35.796-50.61 106.155-50.61zm-7.406 42.894q-52.46 0-75.605 30.242-23.145 29.934-23.145 101.219t23.762 102.145q23.761 30.55 76.222 30.55 47.215 0 70.36-34.254 23.144-34.562 23.144-99.058 0-66.04-23.144-98.442-23.145-32.402-71.594-32.402z" fill="#fff"/>
|
|
||||||
<path d="M317.273 639.45q51.227 0 74.68-27.466 23.453-27.464 24.996-92.578v-11.418q0-70.976-24.07-102.144-24.07-31.168-76.223-31.168-45.055 0-69.125 35.18-23.762 34.87-23.762 98.75 0 63.879 23.454 97.515 23.761 33.328 70.05 33.328zm-7.715 42.894q-65.421 0-102.144-45.98-36.723-45.981-36.723-128.376 0-83.011 37.032-129.609 37.03-46.598 103.07-46.598 69.433 0 106.773 52.461h2.778l7.406-46.289h40.426V828h-51.227V683.27q0-30.86 3.395-52.461h-4.012q-35.488 51.535-106.774 51.535z" fill="#c8e8ff"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 22 KiB |
@@ -1,13 +0,0 @@
|
|||||||
<svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<mask id="mask0_11_17" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="0" y="0" width="512" height="512">
|
|
||||||
<rect width="512" height="512" fill="black"/>
|
|
||||||
</mask>
|
|
||||||
<g mask="url(#mask0_11_17)">
|
|
||||||
<path d="M375.776 63.6078C376.949 58.409 384.357 58.409 385.53 63.6078L435.035 282.926C436.338 288.703 428.294 291.55 425.673 286.239L385.137 204.087C383.303 200.37 378.003 200.37 376.169 204.087L335.632 286.239C333.012 291.55 324.967 288.703 326.271 282.926L375.776 63.6078Z" fill="#D9D9D9"/>
|
|
||||||
<path d="M400 312C400 338.264 394.827 364.272 384.776 388.537C374.725 412.802 359.993 434.85 341.421 453.421C322.85 471.993 300.802 486.725 276.537 496.776C252.272 506.827 226.264 512 200 512C173.736 512 147.728 506.827 123.463 496.776C99.1982 486.725 77.1504 471.993 58.5786 453.421C40.0069 434.85 25.275 412.802 15.2241 388.537C5.17315 364.272 -2.2961e-06 338.264 0 312L40.7078 312C40.7078 332.919 44.828 353.632 52.8332 372.958C60.8383 392.285 72.5717 409.845 87.3634 424.637C102.155 439.428 119.715 451.162 139.041 459.167C158.368 467.172 179.081 471.292 200 471.292C220.919 471.292 241.632 467.172 260.958 459.167C280.285 451.162 297.845 439.428 312.637 424.637C327.428 409.845 339.162 392.285 347.167 372.959C355.172 353.632 359.292 332.919 359.292 312H400Z" fill="#D9D9D9"/>
|
|
||||||
<path d="M0 20.5C0 9.17816 9.17816 0 20.5 0V0C31.8218 0 41 9.17816 41 20.5V310.5C41 321.822 31.8218 331 20.5 331V331C9.17816 331 0 321.822 0 310.5V20.5Z" fill="#D9D9D9"/>
|
|
||||||
<path d="M359 20.5C359 9.17816 368.178 0 379.5 0V0C390.822 0 400 9.17816 400 20.5V310.5C400 321.822 390.822 331 379.5 331V331C368.178 331 359 321.822 359 310.5V20.5Z" fill="#D9D9D9"/>
|
|
||||||
<path d="M362.06 10.2806C363.767 5.02805 369.408 2.15354 374.661 3.86019V3.86019C379.913 5.56684 382.788 11.2084 381.081 16.4609L284.977 312.239C283.27 317.492 277.629 320.367 272.376 318.66V318.66C267.123 316.953 264.249 311.312 265.956 306.059L362.06 10.2806Z" fill="#D9D9D9"/>
|
|
||||||
<path d="M378.96 17.9405C377.254 12.688 380.128 7.04642 385.381 5.33976V5.33976C390.633 3.63311 396.275 6.50762 397.981 11.7602L494.086 307.539C495.792 312.791 492.918 318.433 487.665 320.139V320.139C482.413 321.846 476.771 318.972 475.064 313.719L378.96 17.9405Z" fill="#D9D9D9"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 2.2 KiB |
@@ -1 +0,0 @@
|
|||||||
<svg width="1024" height="1024" xmlns="http://www.w3.org/2000/svg"><path d="M824.107 733.403h-48.57L559.99 303.633h66.247l172.239 353.351 159.872-353.328h63.604L824.083 733.38" style="fill:#50b450;fill-opacity:1;stroke:none;stroke-width:27.5306"/><path d="M501.178 733.97 285.584 302.925h66.248l214.012 430.809m-344.17.236L6.103 302.948h66.27l211.77 430.81" style="fill:#50b450;stroke-width:27.5306"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 407 B |
@@ -5,13 +5,6 @@
|
|||||||
<x-forms.button type="submit">
|
<x-forms.button type="submit">
|
||||||
Save
|
Save
|
||||||
</x-forms.button>
|
</x-forms.button>
|
||||||
{{--
|
|
||||||
<x-forms.button wire:click="downloadConfig">
|
|
||||||
Download Config
|
|
||||||
<x-modal-input buttonTitle="Upload Config" title="Upload Config" :closeOutside="false">
|
|
||||||
<livewire:project.shared.upload-config :applicationId="$application->id" />
|
|
||||||
</x-modal-input>
|
|
||||||
--}}
|
|
||||||
</div>
|
</div>
|
||||||
<div>General configuration for your application.</div>
|
<div>General configuration for your application.</div>
|
||||||
<div class="flex flex-col gap-2 py-4">
|
<div class="flex flex-col gap-2 py-4">
|
||||||
|
|||||||
@@ -52,21 +52,15 @@
|
|||||||
helper="It is calculated together with the Base Directory:<br><span class='dark:text-warning'>{{ Str::start($base_directory . $docker_compose_location, '/') }}</span>" />
|
helper="It is calculated together with the Base Directory:<br><span class='dark:text-warning'>{{ Str::start($base_directory . $docker_compose_location, '/') }}</span>" />
|
||||||
Compose file location in your repository:<span
|
Compose file location in your repository:<span
|
||||||
class='dark:text-warning'>{{ Str::start($base_directory . $docker_compose_location, '/') }}</span>
|
class='dark:text-warning'>{{ Str::start($base_directory . $docker_compose_location, '/') }}</span>
|
||||||
@else
|
|
||||||
<x-forms.input wire:model="base_directory" label="Base Directory"
|
|
||||||
helper="Directory to use as root. Useful for monorepos." />
|
|
||||||
@endif
|
@endif
|
||||||
@if ($show_is_static)
|
@if ($show_is_static)
|
||||||
<x-forms.input type="number" id="port" label="Port" :readonly="$isStatic || $build_pack === 'static'"
|
<x-forms.input type="number" id="port" label="Port" :readonly="$isStatic || $build_pack === 'static'"
|
||||||
helper="The port your application listens on." />
|
helper="The port your application listens on." />
|
||||||
<div class="w-64">
|
<div class="w-52">
|
||||||
<x-forms.checkbox instantSave id="isStatic" label="Is it a static site?"
|
<x-forms.checkbox instantSave id="isStatic" label="Is it a static site?"
|
||||||
helper="If your application is a static site or the final build assets should be served as a static site, enable this." />
|
helper="If your application is a static site or the final build assets should be served as a static site, enable this." />
|
||||||
</div>
|
</div>
|
||||||
@endif
|
@endif
|
||||||
{{-- <div class="w-64">
|
|
||||||
<x-forms.checkbox helper="If your repository contains a coolify.json file, it will be used to configure your application." instantSave id="checkCoolifyConfig" label="Use coolify.json if exists?" />
|
|
||||||
</div> --}}
|
|
||||||
{{-- @if ($build_pack === 'dockercompose' && isDev())
|
{{-- @if ($build_pack === 'dockercompose' && isDev())
|
||||||
<div class="dark:text-warning">If you choose Docker Compose based deployments, you cannot
|
<div class="dark:text-warning">If you choose Docker Compose based deployments, you cannot
|
||||||
change it afterwards.</div>
|
change it afterwards.</div>
|
||||||
|
|||||||
@@ -204,8 +204,8 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
@endif
|
|
||||||
</div>
|
</div>
|
||||||
|
@endif
|
||||||
@if ($current_step === 'servers')
|
@if ($current_step === 'servers')
|
||||||
<h2>Select a server</h2>
|
<h2>Select a server</h2>
|
||||||
<div class="pb-5"></div>
|
<div class="pb-5"></div>
|
||||||
|
|||||||
@@ -1,6 +0,0 @@
|
|||||||
<form wire:submit="uploadConfig" class="flex flex-col gap-2 w-full">
|
|
||||||
<x-forms.textarea id="config" monacoEditorLanguage="json" useMonacoEditor />
|
|
||||||
<x-forms.button type="submit">
|
|
||||||
Upload
|
|
||||||
</x-forms.button>
|
|
||||||
</form>
|
|
||||||
@@ -1,75 +0,0 @@
|
|||||||
# documentation: https://docs.affine.pro/docs/self-host-affine
|
|
||||||
# slogan: Affine is an open-source, all-in-one workspace and OS for knowledge management, a Notion/Miro alternative.
|
|
||||||
# tags: knowledge-management,notion,miro,workspace
|
|
||||||
# logo: svgs/affine.svg
|
|
||||||
# port: 3010
|
|
||||||
|
|
||||||
services:
|
|
||||||
affine:
|
|
||||||
image: ghcr.io/toeverything/affine-graphql:stable
|
|
||||||
command:
|
|
||||||
- sh
|
|
||||||
- '-c'
|
|
||||||
- 'node ./scripts/self-host-predeploy && node ./dist/index.js'
|
|
||||||
depends_on:
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
postgres:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
|
||||||
- affine-config:/root/.affine/config
|
|
||||||
- affine-storage:/root/.affine/storage
|
|
||||||
logging:
|
|
||||||
driver: json-file
|
|
||||||
options:
|
|
||||||
max-size: 1000m
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_AFFINE_3010
|
|
||||||
- NODE_OPTIONS=--import=./scripts/register.js
|
|
||||||
- AFFINE_CONFIG_PATH=/root/.affine/config
|
|
||||||
- REDIS_SERVER_HOST=redis
|
|
||||||
- DATABASE_URL=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-affine}
|
|
||||||
- NODE_ENV=production
|
|
||||||
- AFFINE_SERVER_HOST=$SERVICE_FQDN_AFFINE
|
|
||||||
- AFFINE_SERVER_EXTERNAL_URL=$SERVICE_FQDN_AFFINE
|
|
||||||
- MAILER_HOST=${MAILER_HOST}
|
|
||||||
- MAILER_PORT=${MAILER_PORT}
|
|
||||||
- MAILER_USER=${MAILER_USER}
|
|
||||||
- MAILER_PASSWORD=${MAILER_PASSWORD}
|
|
||||||
- MAILER_SENDER=${MAILER_SENDER}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/3010' || exit 1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis
|
|
||||||
volumes:
|
|
||||||
- affine-redis-data:/data
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- '--raw'
|
|
||||||
- incr
|
|
||||||
- ping
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
postgres:
|
|
||||||
image: postgres:16
|
|
||||||
volumes:
|
|
||||||
- affine-postgres-data:/var/lib/postgresql/data
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD-SHELL
|
|
||||||
- 'pg_isready -U affine'
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
- POSTGRES_DB=${POSTGRES_DB:-affine}
|
|
||||||
- PGDATA=/var/lib/postgresql/data/pgdata
|
|
||||||
23
templates/compose/audiobookshelf.yaml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
# documentation: https://www.audiobookshelf.org/
|
||||||
|
# slogan: Self-hosted audiobook, ebook, and podcast server
|
||||||
|
# tags: audiobooks, ebooks, podcasts, server, self-hosted
|
||||||
|
# logo: svgs/audiobookshelf.svg
|
||||||
|
# port: 80
|
||||||
|
|
||||||
|
services:
|
||||||
|
audiobookshelf:
|
||||||
|
image: ghcr.io/advplyr/audiobookshelf:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_AUDIOBOOKSHELF_80
|
||||||
|
- TZ=${TIMEZONE:-America/Toronto}
|
||||||
|
volumes:
|
||||||
|
- audiobookshelf-audiobooks:/audiobooks
|
||||||
|
- audiobookshelf-podcasts:/podcasts
|
||||||
|
- audiobookshelf-config:/config
|
||||||
|
- audiobookshelf-metadata:/metadata
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "curl -f http://localhost:80/ping || exit 1"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 15s
|
||||||
98
templates/compose/azimutt.yaml
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
# ignore: true
|
||||||
|
# documentation: https://docs.azimutt.app/
|
||||||
|
# slogan: Next-Gen ERD: Design, Explore, Document and Analyze your database.
|
||||||
|
# tags: erd, entity-relationship diagram, database tool, database schema, diagram
|
||||||
|
# logo: svgs/azimutt.svg
|
||||||
|
# port: 4000
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: postgres:15
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRE
|
||||||
|
- POSTGRES_USER=$SERVICE_USER_POSTGRE
|
||||||
|
- POSTGRES_DB=azimutt
|
||||||
|
volumes:
|
||||||
|
- azimutt-postgres-data:/var/lib/postgresql/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U $SERVICE_USER_POSTGRESQL"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
minio:
|
||||||
|
image: minio/minio:latest
|
||||||
|
command: server /data --console-address ":9001"
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_MINIO_9001
|
||||||
|
- MINIO_SERVER_URL=$SERVICE_FQDN_MINIO_9001
|
||||||
|
- MINIO_BROWSER_REDIRECT_URL=$SERVICE_FQDN_MINIO_9001
|
||||||
|
- MINIO_ROOT_USER=$SERVICE_USER_MINIO
|
||||||
|
- MINIO_ROOT_PASSWORD=$SERVICE_PASSWORD_MINIO
|
||||||
|
volumes:
|
||||||
|
- azimutt-minio-data:/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
createbuckets:
|
||||||
|
image: minio/mc:latest
|
||||||
|
depends_on:
|
||||||
|
minio:
|
||||||
|
condition: service_healthy
|
||||||
|
entrypoint: >
|
||||||
|
/bin/sh -c "
|
||||||
|
/usr/bin/mc config host add myminio http://minio:9000 $SERVICE_USER_MINIO $SERVICE_PASSWORD_MINIO;
|
||||||
|
/usr/bin/mc mb -p myminio/azimutt;
|
||||||
|
/usr/bin/mc policy download myminio/azimutt;
|
||||||
|
exit 0;
|
||||||
|
"
|
||||||
|
|
||||||
|
smtp:
|
||||||
|
image: bytemark/smtp:latest
|
||||||
|
platform: linux/amd64
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_SMTP
|
||||||
|
- RELAY_HOST=$SERVICE_FQDN_SMTP
|
||||||
|
- RELAY_PORT=${RELAY_PORT:-587}
|
||||||
|
- RELAY_USERNAME=$SERVICE_EMAIL_SMTP
|
||||||
|
- RELAY_PASSWORD=$SERVICE_PASSWORD_SMTP
|
||||||
|
|
||||||
|
backend:
|
||||||
|
container_name: azimutt-backend
|
||||||
|
platform: linux/amd64
|
||||||
|
image: ghcr.io/azimuttapp/azimutt:main
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
minio:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_AZIMUTT_4000
|
||||||
|
- PHX_SERVER=true
|
||||||
|
- PHX_HOST=$SERVICE_FQDN_AZIMUTT_4000
|
||||||
|
- PORT=${PORT:-4000}
|
||||||
|
- DATABASE_URL=ecto://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres/azimutt
|
||||||
|
- SECRET_KEY_BASE=$SERVICE_BASE64_64_AZIMUTT
|
||||||
|
- FILE_STORAGE_ADAPTER=${FILE_STORAGE_ADAPTER:-s3}
|
||||||
|
- AUTH_PASSWORD=${AUTH_PASSWORD:-true}
|
||||||
|
- SKIP_ONBOARDING_FUNNEL=${SKIP_ONBOARDING_FUNNEL:-true}
|
||||||
|
- SKIP_EMAIL_CONFIRMATION=${SKIP_EMAIL_CONFIRMATION:-true}
|
||||||
|
- PUBLIC_SITE=${PUBLIC_SITE:-false}
|
||||||
|
- S3_BUCKET=${S3_BUCKET}
|
||||||
|
- S3_HOST=${S3_HOST}
|
||||||
|
- S3_KEY_ID=${S3_KEY_ID}
|
||||||
|
- S3_KEY_SECRET=${S3_KEY_SECRET}
|
||||||
|
- EMAIL_ADAPTER=${EMAIL_ADAPTER:-smtp}
|
||||||
|
- SMTP_RELAY=$SERVICE_FQDN_SMTP
|
||||||
|
- SMTP_USERNAME=$SERVICE_EMAIL_SMTP
|
||||||
|
- SMTP_PASSWORD=$SERVICE_PASSWORD_SMTP
|
||||||
|
- SMTP_PORT=${SMTP_PORT:-587}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:${PORT:-4000}/ping"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 40s
|
||||||
59
templates/compose/bookstack.yaml
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# documentation: https://www.bookstackapp.com/docs/
|
||||||
|
# slogan: BookStack is a simple, self-hosted, easy-to-use platform for organising and storing information
|
||||||
|
# tags: free-and-open-source,mfa,dark-light-themes,searchable,connected,simple-interface,diagramms,notes
|
||||||
|
# logo: svgs/bookstack.png
|
||||||
|
# port: 80
|
||||||
|
|
||||||
|
services:
|
||||||
|
bookstack:
|
||||||
|
image: lscr.io/linuxserver/bookstack:latest
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_BOOKSTACK_80
|
||||||
|
- APP_URL=${SERVICE_FQDN_BOOKSTACK}
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=${TZ:-Europe/Berlin}
|
||||||
|
- DB_HOST=mariadb
|
||||||
|
- DB_PORT=3306
|
||||||
|
- DB_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- DB_PASS=${SERVICE_PASSWORD_MYSQL}
|
||||||
|
- DB_DATABASE=${MYSQL_DATABASE:-bookstackapp}
|
||||||
|
- QUEUE_CONNECTION=${QUEUE_CONNECTION}
|
||||||
|
# You will need to set up an authentication provider as described at https://www.bookstackapp.com/docs/admin/third-party-auth/.
|
||||||
|
- GITHUB_APP_ID=${GITHUB_APP_ID}
|
||||||
|
- GITHUB_APP_SECRET=${GITHUB_APP_SECRET}
|
||||||
|
volumes:
|
||||||
|
- 'bookstack-data:/config'
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD-SHELL
|
||||||
|
- 'wget -qO- http://127.0.0.1:80/'
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
depends_on:
|
||||||
|
mariadb:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
image: lscr.io/linuxserver/mariadb:latest
|
||||||
|
environment:
|
||||||
|
- PUID=1000
|
||||||
|
- PGID=1000
|
||||||
|
- TZ=${TZ:-Europe/Berlin}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE:-bookstack}
|
||||||
|
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||||
|
volumes:
|
||||||
|
- 'bookstack-mariadb-data:/config'
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- mysqladmin
|
||||||
|
- ping
|
||||||
|
- '-h'
|
||||||
|
- 127.0.0.1
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# documentation: https://dbeaver.com/docs/cloudbeaver/
|
|
||||||
# slogan: CloudBeaver is a lightweight web application designed for comprehensive data management.
|
|
||||||
# tags: dbeaver, data management, data, database, mysql, postgres, sqlite, sql, mongodb
|
|
||||||
# logo: svgs/cloudbeaver.svg
|
|
||||||
# port: 8978
|
|
||||||
|
|
||||||
services:
|
|
||||||
cloudbeaver:
|
|
||||||
image: dbeaver/cloudbeaver:24
|
|
||||||
volumes:
|
|
||||||
- cloudbeaver-data:/opt/cloudbeaver/workspace
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_CLOUDBEAVER_8978
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8978/"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# documentation: https://github.com/cupcakearmy/cryptgeon
|
|
||||||
# slogan: Secure note / file sharing service inspired by PrivNote.
|
|
||||||
# tags: cryptgeon, secure, note, sharing, privnote, file, sharing
|
|
||||||
# logo: svgs/cryptgeon.png
|
|
||||||
# port: 8000
|
|
||||||
|
|
||||||
services:
|
|
||||||
app:
|
|
||||||
image: cupcakearmy/cryptgeon:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_CRYPTGEON_8000
|
|
||||||
- SIZE_LIMIT=${SIZE_LIMIT:-4 MiB}
|
|
||||||
- MAX_VIEWS=${MAX_VIEWS:-100}
|
|
||||||
- MAX_EXPIRATION=${MAX_EXPIRATION:-360}
|
|
||||||
- ALLOW_ADVANCED=${ALLOW_ADVANCED:-true}
|
|
||||||
- ALLOW_FILES=${ALLOW_FILES:-true}
|
|
||||||
depends_on:
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- curl
|
|
||||||
- "--fail"
|
|
||||||
- "http://127.0.0.1:8000/api/live/"
|
|
||||||
interval: 1m
|
|
||||||
timeout: 3s
|
|
||||||
retries: 2
|
|
||||||
start_period: 5s
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7-alpine
|
|
||||||
command: "redis-server --maxmemory 200mb --maxmemory-policy allkeys-lru"
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- PING
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 2
|
|
||||||
@@ -1,91 +0,0 @@
|
|||||||
# documentation: https://docs.flowiseai.com/
|
|
||||||
# slogan: Flowise is an open source low-code tool for developers to build customized LLM orchestration flows & AI agents. Also deploys Redis, Postgres and other services.
|
|
||||||
# tags: lowcode, nocode, ai, llm, openai, anthropic, machine-learning, rag, agents, chatbot, api, team, bot, flows
|
|
||||||
# logo: svgs/flowise.png
|
|
||||||
# port: 3001
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
flowise_data:
|
|
||||||
pg_record_manager_data:
|
|
||||||
redis_cache_data:
|
|
||||||
qdrant_data:
|
|
||||||
|
|
||||||
services:
|
|
||||||
flowise:
|
|
||||||
image: flowiseai/flowise
|
|
||||||
restart: always
|
|
||||||
depends_on:
|
|
||||||
pg_record_manager:
|
|
||||||
condition: service_healthy
|
|
||||||
redis_cache:
|
|
||||||
condition: service_healthy
|
|
||||||
qdrant:
|
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_FLOWISE_3001
|
|
||||||
- DEBUG=false
|
|
||||||
- DISABLE_FLOWISE_TELEMETRY=true
|
|
||||||
- PORT=3001
|
|
||||||
- DATABASE_PATH=/root/.flowise
|
|
||||||
- APIKEY_PATH=/root/.flowise
|
|
||||||
- SECRETKEY_PATH=/root/.flowise
|
|
||||||
- LOG_PATH=/root/.flowise/logs
|
|
||||||
- BLOB_STORAGE_PATH=/root/.flowise/storage
|
|
||||||
- FLOWISE_USERNAME=${SERVICE_USER_FLOWISE}
|
|
||||||
- FLOWISE_PASSWORD=${SERVICE_PASSWORD_FLOWISE}
|
|
||||||
volumes:
|
|
||||||
- flowise_data:/root/.flowise
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD-SHELL
|
|
||||||
- wget
|
|
||||||
- --no-verbose
|
|
||||||
- --tries=1
|
|
||||||
- --spider
|
|
||||||
- http://localhost:3001
|
|
||||||
interval: 5s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
pg_record_manager:
|
|
||||||
image: "postgres:16"
|
|
||||||
restart: always
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
- POSTGRES_DB=${POSTGRES_DB:-record_manager}
|
|
||||||
volumes:
|
|
||||||
- pg_record_manager_data:/var/lib/postgresql/data
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD-SHELL
|
|
||||||
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
|
|
||||||
interval: 5s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
redis_cache:
|
|
||||||
image: "redis:7"
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- redis_cache_data:/data
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD-SHELL
|
|
||||||
- "redis-cli -h localhost -p 6379 ping"
|
|
||||||
interval: 5s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
qdrant:
|
|
||||||
image: "qdrant/qdrant:latest"
|
|
||||||
restart: always
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_QDRANT_6333
|
|
||||||
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
|
|
||||||
volumes:
|
|
||||||
- "qdrant_data:/qdrant/storage"
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD-SHELL
|
|
||||||
- bash -c ':> /dev/tcp/127.0.0.1/6333' || exit 1
|
|
||||||
interval: 5s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# documentation: https://docs.flowiseai.com/
|
|
||||||
# slogan: Flowise is an open source low-code tool for developers to build customized LLM orchestration flows & AI agents.
|
|
||||||
# tags: lowcode, nocode, ai, llm, openai, anthropic, machine-learning, rag, agents, chatbot, api, team, bot, flows
|
|
||||||
# logo: svgs/flowise.png
|
|
||||||
# port: 3001
|
|
||||||
|
|
||||||
services:
|
|
||||||
flowise:
|
|
||||||
image: flowiseai/flowise
|
|
||||||
restart: always
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_FLOWISE_3001
|
|
||||||
- DEBUG=false
|
|
||||||
- DISABLE_FLOWISE_TELEMETRY=true
|
|
||||||
- PORT=3001
|
|
||||||
- DATABASE_PATH=/root/.flowise
|
|
||||||
- APIKEY_PATH=/root/.flowise
|
|
||||||
- SECRETKEY_PATH=/root/.flowise
|
|
||||||
- LOG_PATH=/root/.flowise/logs
|
|
||||||
- BLOB_STORAGE_PATH=/root/.flowise/storage
|
|
||||||
- FLOWISE_USERNAME=${SERVICE_USER_FLOWISE}
|
|
||||||
- FLOWISE_PASSWORD=${SERVICE_PASSWORD_FLOWISE}
|
|
||||||
volumes:
|
|
||||||
- flowise_data:/root/.flowise
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD-SHELL
|
|
||||||
- wget
|
|
||||||
- --no-verbose
|
|
||||||
- --tries=1
|
|
||||||
- --spide
|
|
||||||
- http://localhost:3001
|
|
||||||
interval: 5s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 3
|
|
||||||
50
templates/compose/forgejo-with-mariadb.yaml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, mariadb
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- FORGEJO__database__DB_TYPE=mysql
|
||||||
|
- FORGEJO__database__HOST=mariadb
|
||||||
|
- FORGEJO__database__NAME=${MYSQL_DATABASE-forgejo}
|
||||||
|
- FORGEJO__database__USER=$SERVICE_USER_MYSQL
|
||||||
|
- FORGEJO__database__PASSWD=$SERVICE_PASSWORD_MYSQL
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
depends_on:
|
||||||
|
mariadb:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
image: mariadb:11
|
||||||
|
volumes:
|
||||||
|
- forgejo-mariadb-data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
50
templates/compose/forgejo-with-mysql.yaml
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, mysql
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- FORGEJO__database__DB_TYPE=mysql
|
||||||
|
- FORGEJO__database__HOST=mysql
|
||||||
|
- FORGEJO__database__NAME=${MYSQL_DATABASE-forgejo}
|
||||||
|
- FORGEJO__database__USER=$SERVICE_USER_MYSQL
|
||||||
|
- FORGEJO__database__PASSWD=$SERVICE_PASSWORD_MYSQL
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: mysql:8
|
||||||
|
volumes:
|
||||||
|
- forgejo-mysql-data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
49
templates/compose/forgejo-with-postgresql.yaml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, postgresql
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- FORGEJO__database__DB_TYPE=postgres
|
||||||
|
- FORGEJO__database__HOST=postgresql
|
||||||
|
- FORGEJO__database__NAME=${POSTGRESQL_DATABASE-forgejo}
|
||||||
|
- FORGEJO__database__USER=$SERVICE_USER_POSTGRESQL
|
||||||
|
- FORGEJO__database__PASSWD=$SERVICE_PASSWORD_POSTGRESQL
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
depends_on:
|
||||||
|
postgresql:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
volumes:
|
||||||
|
- forgejo-postgresql-data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
||||||
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
||||||
|
- POSTGRES_DB=${POSTGRESQL_DATABASE}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
136
templates/compose/forgejo-with-runner-with-mariadb.yaml
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, runner, mariadb, actions, cicd, ci
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- FORGEJO__database__DB_TYPE=mysql
|
||||||
|
- FORGEJO__database__HOST=mariadb
|
||||||
|
- FORGEJO__database__NAME=${MYSQL_DATABASE-forgejo}
|
||||||
|
- FORGEJO__database__USER=$SERVICE_USER_MYSQL
|
||||||
|
- FORGEJO__database__PASSWD=$SERVICE_PASSWORD_MYSQL
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET-0000000000000000000000000000000000000000}
|
||||||
|
- FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
|
||||||
|
- FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false
|
||||||
|
- FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
depends_on:
|
||||||
|
mariadb:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
/bin/s6-svscan /etc/s6 &
|
||||||
|
sleep 10 ;
|
||||||
|
su -c "forgejo forgejo-cli actions register --secret ${RUNNER_SHARED_SECRET}" git ;
|
||||||
|
sleep infinity
|
||||||
|
'
|
||||||
|
|
||||||
|
mariadb:
|
||||||
|
image: mariadb:11
|
||||||
|
volumes:
|
||||||
|
- forgejo-mariadb-data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
docker-in-docker:
|
||||||
|
image: docker:dind
|
||||||
|
hostname: docker
|
||||||
|
privileged: true
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "dockerd"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
environment:
|
||||||
|
DOCKER_TLS_CERTDIR: /certs
|
||||||
|
DOCKER_HOST: docker-in-docker
|
||||||
|
volumes:
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
|
||||||
|
runner-register:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
restart: 'no'
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker-in-docker:2376
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET}
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
disable: true
|
||||||
|
user: 0:0
|
||||||
|
command: >-
|
||||||
|
bash -ec '
|
||||||
|
while : ; do
|
||||||
|
forgejo-runner create-runner-file --connect --instance http://forgejo:3000 --name runner --secret ${RUNNER_SHARED_SECRET} && break ;
|
||||||
|
sleep 1 ;
|
||||||
|
done ;
|
||||||
|
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
|
||||||
|
forgejo-runner generate-config > config.yml ;
|
||||||
|
sed -i -e "s|network: .*|network: host|" config.yml ;
|
||||||
|
sed -i -e "s|^ envs:$$| envs:\n DOCKER_HOST: tcp://docker:2376\n DOCKER_TLS_VERIFY: 1\n DOCKER_CERT_PATH: /certs/client|" config.yml ;
|
||||||
|
sed -i -e "s|^ options:| options: -v /certs/client:/certs/client|" config.yml ;
|
||||||
|
sed -i -e "s| valid_volumes: \[\]$$| valid_volumes:\n - /certs/client|" config.yml ;
|
||||||
|
chown -R 1000:1000 /data ;
|
||||||
|
exit 0
|
||||||
|
'
|
||||||
|
|
||||||
|
runner:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
depends_on:
|
||||||
|
docker-in-docker:
|
||||||
|
condition: service_started
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker:2376
|
||||||
|
- DOCKER_CERT_PATH=/certs/client
|
||||||
|
- DOCKER_TLS_VERIFY=1
|
||||||
|
user: 1000:1000
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "forgejo-runner"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
while : ; do test -w .runner && forgejo-runner --config config.yml daemon ; sleep 1 ; done
|
||||||
|
'
|
||||||
136
templates/compose/forgejo-with-runner-with-mysql.yaml
Normal file
@@ -0,0 +1,136 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, runner, mysql, actions, cicd, ci
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- FORGEJO__database__DB_TYPE=mysql
|
||||||
|
- FORGEJO__database__HOST=mysql
|
||||||
|
- FORGEJO__database__NAME=${MYSQL_DATABASE-forgejo}
|
||||||
|
- FORGEJO__database__USER=$SERVICE_USER_MYSQL
|
||||||
|
- FORGEJO__database__PASSWD=$SERVICE_PASSWORD_MYSQL
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET-0000000000000000000000000000000000000000}
|
||||||
|
- FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
|
||||||
|
- FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false
|
||||||
|
- FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
depends_on:
|
||||||
|
mysql:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
/bin/s6-svscan /etc/s6 &
|
||||||
|
sleep 10 ;
|
||||||
|
su -c "forgejo forgejo-cli actions register --secret ${RUNNER_SHARED_SECRET}" git ;
|
||||||
|
sleep infinity
|
||||||
|
'
|
||||||
|
|
||||||
|
mysql:
|
||||||
|
image: mysql:8
|
||||||
|
volumes:
|
||||||
|
- forgejo-mysql-data:/var/lib/mysql
|
||||||
|
environment:
|
||||||
|
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
||||||
|
- MYSQL_DATABASE=${MYSQL_DATABASE}
|
||||||
|
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MYSQLROOT}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
docker-in-docker:
|
||||||
|
image: docker:dind
|
||||||
|
hostname: docker
|
||||||
|
privileged: true
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "dockerd"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
environment:
|
||||||
|
DOCKER_TLS_CERTDIR: /certs
|
||||||
|
DOCKER_HOST: docker-in-docker
|
||||||
|
volumes:
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
|
||||||
|
runner-register:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
restart: 'no'
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker-in-docker:2376
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET}
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
disable: true
|
||||||
|
user: 0:0
|
||||||
|
command: >-
|
||||||
|
bash -ec '
|
||||||
|
while : ; do
|
||||||
|
forgejo-runner create-runner-file --connect --instance http://forgejo:3000 --name runner --secret ${RUNNER_SHARED_SECRET} && break ;
|
||||||
|
sleep 1 ;
|
||||||
|
done ;
|
||||||
|
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
|
||||||
|
forgejo-runner generate-config > config.yml ;
|
||||||
|
sed -i -e "s|network: .*|network: host|" config.yml ;
|
||||||
|
sed -i -e "s|^ envs:$$| envs:\n DOCKER_HOST: tcp://docker:2376\n DOCKER_TLS_VERIFY: 1\n DOCKER_CERT_PATH: /certs/client|" config.yml ;
|
||||||
|
sed -i -e "s|^ options:| options: -v /certs/client:/certs/client|" config.yml ;
|
||||||
|
sed -i -e "s| valid_volumes: \[\]$$| valid_volumes:\n - /certs/client|" config.yml ;
|
||||||
|
chown -R 1000:1000 /data ;
|
||||||
|
exit 0
|
||||||
|
'
|
||||||
|
|
||||||
|
runner:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
depends_on:
|
||||||
|
docker-in-docker:
|
||||||
|
condition: service_started
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker:2376
|
||||||
|
- DOCKER_CERT_PATH=/certs/client
|
||||||
|
- DOCKER_TLS_VERIFY=1
|
||||||
|
user: 1000:1000
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "forgejo-runner"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
while : ; do test -w .runner && forgejo-runner --config config.yml daemon ; sleep 1 ; done
|
||||||
|
'
|
||||||
135
templates/compose/forgejo-with-runner-with-postgresql.yaml
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, runner, postresql, actions, cicd, ci
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- FORGEJO__database__DB_TYPE=postgres
|
||||||
|
- FORGEJO__database__HOST=postgresql
|
||||||
|
- FORGEJO__database__NAME=${POSTGRESQL_DATABASE-forgejo}
|
||||||
|
- FORGEJO__database__USER=$SERVICE_USER_POSTGRESQL
|
||||||
|
- FORGEJO__database__PASSWD=$SERVICE_PASSWORD_POSTGRESQL
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET-0000000000000000000000000000000000000000}
|
||||||
|
- FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
|
||||||
|
- FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false
|
||||||
|
- FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
depends_on:
|
||||||
|
postgresql:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
/bin/s6-svscan /etc/s6 &
|
||||||
|
sleep 10 ;
|
||||||
|
su -c "forgejo forgejo-cli actions register --secret ${RUNNER_SHARED_SECRET}" git ;
|
||||||
|
sleep infinity
|
||||||
|
'
|
||||||
|
|
||||||
|
postgresql:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
volumes:
|
||||||
|
- forgejo-postgresql-data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
||||||
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
||||||
|
- POSTGRES_DB=${POSTGRESQL_DATABASE}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
|
docker-in-docker:
|
||||||
|
image: docker:dind
|
||||||
|
hostname: docker
|
||||||
|
privileged: true
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "dockerd"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
environment:
|
||||||
|
DOCKER_TLS_CERTDIR: /certs
|
||||||
|
DOCKER_HOST: docker-in-docker
|
||||||
|
volumes:
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
|
||||||
|
runner-register:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
restart: 'no'
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker-in-docker:2376
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET}
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
disable: true
|
||||||
|
user: 0:0
|
||||||
|
command: >-
|
||||||
|
bash -ec '
|
||||||
|
while : ; do
|
||||||
|
forgejo-runner create-runner-file --connect --instance http://forgejo:3000 --name runner --secret ${RUNNER_SHARED_SECRET} && break ;
|
||||||
|
sleep 1 ;
|
||||||
|
done ;
|
||||||
|
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
|
||||||
|
forgejo-runner generate-config > config.yml ;
|
||||||
|
sed -i -e "s|network: .*|network: host|" config.yml ;
|
||||||
|
sed -i -e "s|^ envs:$$| envs:\n DOCKER_HOST: tcp://docker:2376\n DOCKER_TLS_VERIFY: 1\n DOCKER_CERT_PATH: /certs/client|" config.yml ;
|
||||||
|
sed -i -e "s|^ options:| options: -v /certs/client:/certs/client|" config.yml ;
|
||||||
|
sed -i -e "s| valid_volumes: \[\]$$| valid_volumes:\n - /certs/client|" config.yml ;
|
||||||
|
chown -R 1000:1000 /data ;
|
||||||
|
exit 0
|
||||||
|
'
|
||||||
|
|
||||||
|
runner:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
depends_on:
|
||||||
|
docker-in-docker:
|
||||||
|
condition: service_started
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker:2376
|
||||||
|
- DOCKER_CERT_PATH=/certs/client
|
||||||
|
- DOCKER_TLS_VERIFY=1
|
||||||
|
user: 1000:1000
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "forgejo-runner"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
while : ; do test -w .runner && forgejo-runner --config config.yml daemon ; sleep 1 ; done
|
||||||
|
'
|
||||||
113
templates/compose/forgejo-with-runner.yaml
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight, runner, actions, cicd, ci
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS:-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET-0000000000000000000000000000000000000000}
|
||||||
|
- FORGEJO__repository__ENABLE_PUSH_CREATE_USER=true
|
||||||
|
- FORGEJO__repository__DEFAULT_PUSH_CREATE_PRIVATE=false
|
||||||
|
- FORGEJO__repository__DEFAULT_REPO_UNITS=repo.code,repo.actions
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
/bin/s6-svscan /etc/s6 &
|
||||||
|
sleep 10 ;
|
||||||
|
su -c "forgejo forgejo-cli actions register --secret ${RUNNER_SHARED_SECRET}" git ;
|
||||||
|
sleep infinity
|
||||||
|
'
|
||||||
|
|
||||||
|
docker-in-docker:
|
||||||
|
image: docker:dind
|
||||||
|
hostname: docker
|
||||||
|
privileged: true
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "dockerd"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
environment:
|
||||||
|
DOCKER_TLS_CERTDIR=/certs
|
||||||
|
DOCKER_HOST=docker-in-docker
|
||||||
|
volumes:
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
|
||||||
|
runner-register:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
restart: 'no'
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker-in-docker:2376
|
||||||
|
- RUNNER_SHARED_SECRET=${RUNNER_SHARED_SECRET}
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
disable: true
|
||||||
|
user: 0:0
|
||||||
|
command: >-
|
||||||
|
bash -ec '
|
||||||
|
while : ; do
|
||||||
|
forgejo-runner create-runner-file --connect --instance ${SERVICE_FQDN_FORGEJO}:3000 --name runner --secret ${RUNNER_SHARED_SECRET} && break ;
|
||||||
|
sleep 1 ;
|
||||||
|
done ;
|
||||||
|
sed -i -e "s|\"labels\": null|\"labels\": [\"docker:docker://node:20-bookworm\", \"ubuntu-22.04:docker://catthehacker/ubuntu:act-22.04\"]|" .runner ;
|
||||||
|
forgejo-runner generate-config > config.yml ;
|
||||||
|
sed -i -e "s|network: .*|network: host|" config.yml ;
|
||||||
|
sed -i -e "s|^ envs:$$| envs:\n DOCKER_HOST: tcp://docker:2376\n DOCKER_TLS_VERIFY: 1\n DOCKER_CERT_PATH: /certs/client|" config.yml ;
|
||||||
|
sed -i -e "s|^ options:| options: -v /certs/client:/certs/client|" config.yml ;
|
||||||
|
sed -i -e "s| valid_volumes: \[\]$$| valid_volumes:\n - /certs/client|" config.yml ;
|
||||||
|
chown -R 1000:1000 /data ;
|
||||||
|
exit 0
|
||||||
|
'
|
||||||
|
|
||||||
|
runner:
|
||||||
|
image: code.forgejo.org/forgejo/runner:3.5.0
|
||||||
|
links:
|
||||||
|
- docker-in-docker
|
||||||
|
- forgejo
|
||||||
|
depends_on:
|
||||||
|
docker-in-docker:
|
||||||
|
condition: service_started
|
||||||
|
environment:
|
||||||
|
- DOCKER_HOST=tcp://docker:2376
|
||||||
|
- DOCKER_CERT_PATH=/certs/client
|
||||||
|
- DOCKER_TLS_VERIFY=1
|
||||||
|
user: 1000:1000
|
||||||
|
volumes:
|
||||||
|
- forgejo-runner-data:/data
|
||||||
|
- forgejo-did-certs:/certs
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "pgrep", "forgejo-runner"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
command: >-
|
||||||
|
bash -c '
|
||||||
|
while : ; do test -w .runner && forgejo-runner --config config.yml daemon ; sleep 1 ; done
|
||||||
|
'
|
||||||
27
templates/compose/forgejo.yaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# documentation: https://forgejo.org/docs
|
||||||
|
# slogan: Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
|
||||||
|
# tags: version control, collaboration, code, hosting, lightweight
|
||||||
|
# logo: svgs/forgejo.svg
|
||||||
|
# port: 3000
|
||||||
|
|
||||||
|
services:
|
||||||
|
forgejo:
|
||||||
|
image: codeberg.org/forgejo/forgejo:8
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_FORGEJO_3000
|
||||||
|
- FORGEJO__server__ROOT_URL=${SERVICE_FQDN_FORGEJO_3000}
|
||||||
|
- FORGEJO__migrations__ALLOWED_DOMAINS=${FORGEJO__migrations__ALLOWED_DOMAINS}
|
||||||
|
- FORGEJO__migrations__ALLOW_LOCALNETWORKS=${FORGEJO__migrations__ALLOW_LOCALNETWORKS-false}
|
||||||
|
- USER_UID=1000
|
||||||
|
- USER_GID=1000
|
||||||
|
ports:
|
||||||
|
- 22222:22
|
||||||
|
volumes:
|
||||||
|
- forgejo-data:/data
|
||||||
|
- forgejo-timezone:/etc/timezone:ro
|
||||||
|
- forgejo-localtime:/etc/localtime:ro
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# documentation: https://freshrss.org/index.html
|
|
||||||
# slogan: A free, self-hostable feed aggregator.
|
|
||||||
# tags: rss, feed
|
|
||||||
# logo: svgs/freshrss.png
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
freshrss:
|
|
||||||
image: freshrss/freshrss:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_FRESHRSS_80
|
|
||||||
- CRON_MIN=${CRON_MIN:-1,31}
|
|
||||||
- MARIADB_DB=${MARIADB_DATABASE:-freshrss}
|
|
||||||
- MARIADB_USER=${SERVICE_USER_MARIADB}
|
|
||||||
- MARIADB_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
|
||||||
volumes:
|
|
||||||
- freshrss-data:/var/www/FreshRSS/data
|
|
||||||
- freshrss-extensions:/var/www/FreshRSS/extensions
|
|
||||||
depends_on:
|
|
||||||
freshrss-db:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
freshrss-db:
|
|
||||||
image: mariadb:11
|
|
||||||
volumes:
|
|
||||||
- mariadb-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_ROOT
|
|
||||||
- MYSQL_DATABASE=${MARIADB_DATABASE:-freshrss}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MARIADB}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# documentation: https://freshrss.org/index.html
|
|
||||||
# slogan: A free, self-hostable feed aggregator.
|
|
||||||
# tags: rss, feed
|
|
||||||
# logo: svgs/freshrss.png
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
freshrss:
|
|
||||||
image: freshrss/freshrss:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_FRESHRSS_80
|
|
||||||
- CRON_MIN=${CRON_MIN:-1,31}
|
|
||||||
- MYSQL_DB=${MYSQL_DATABASE:-freshrss}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
|
||||||
volumes:
|
|
||||||
- freshrss-data:/var/www/FreshRSS/data
|
|
||||||
- freshrss-extensions:/var/www/FreshRSS/extensions
|
|
||||||
depends_on:
|
|
||||||
freshrss-db:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
freshrss-db:
|
|
||||||
image: mysql:8
|
|
||||||
volumes:
|
|
||||||
- mysql-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_ROOT
|
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-freshrss}
|
|
||||||
- MYSQL_USER=$SERVICE_USER_MYSQL
|
|
||||||
- MYSQL_PASSWORD=$SERVICE_PASSWORD_MYSQL
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# documentation: https://freshrss.org/index.html
|
|
||||||
# slogan: A free, self-hostable feed aggregator.
|
|
||||||
# tags: rss, feed
|
|
||||||
# logo: svgs/freshrss.png
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
freshrss:
|
|
||||||
image: freshrss/freshrss:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_FRESHRSS_80
|
|
||||||
- CRON_MIN=${CRON_MIN:-1,31}
|
|
||||||
- POSTGRES_DB=${POSTGRESQL_DATABASE:-freshrss}
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
|
||||||
- POSTGRES_HOST=postgresql
|
|
||||||
volumes:
|
|
||||||
- freshrss-data:/var/www/FreshRSS/data
|
|
||||||
- freshrss-extensions:/var/www/FreshRSS/extensions
|
|
||||||
depends_on:
|
|
||||||
freshrss-db:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 3
|
|
||||||
|
|
||||||
freshrss-db:
|
|
||||||
image: postgres:16
|
|
||||||
volumes:
|
|
||||||
- freshrss-postgresql-data:/var/lib/postgresql/data
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRESQL}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
|
||||||
- POSTGRES_DB=${POSTGRESQL_DATABASE:-freshrss}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
# documentation: https://freshrss.org/index.html
|
|
||||||
# slogan: A free, self-hostable feed aggregator.
|
|
||||||
# tags: rss, feed
|
|
||||||
# logo: svgs/freshrss.png
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
freshrss:
|
|
||||||
image: freshrss/freshrss:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_FRESHRSS_80
|
|
||||||
- CRON_MIN=${CRON_MIN:-1,31}
|
|
||||||
volumes:
|
|
||||||
- freshrss-data:/var/www/FreshRSS/data
|
|
||||||
- freshrss-extensions:/var/www/FreshRSS/extensions
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 3
|
|
||||||
@@ -58,6 +58,7 @@ services:
|
|||||||
- GITHUB_APP_ID=${GITHUB_APP_ID}
|
- GITHUB_APP_ID=${GITHUB_APP_ID}
|
||||||
- GITHUB_APP_PRIVATE_KEY=${GITHUB_APP_PRIVATE_KEY}
|
- GITHUB_APP_PRIVATE_KEY=${GITHUB_APP_PRIVATE_KEY}
|
||||||
- PGSSLMODE=${PGSSLMODE:-disable}
|
- PGSSLMODE=${PGSSLMODE:-disable}
|
||||||
|
- FORCE_HTTPS=${FORCE_HTTPS:-true}
|
||||||
healthcheck:
|
healthcheck:
|
||||||
disable: true
|
disable: true
|
||||||
|
|
||||||
|
|||||||
@@ -12,13 +12,12 @@ services:
|
|||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
|
||||||
- POSTGRES_DB=${POSTGRESQL_DATABASE:-glitchtip}
|
- POSTGRES_DB=${POSTGRESQL_DATABASE:-glitchtip}
|
||||||
volumes:
|
volumes:
|
||||||
- glitchtip-postgres-data:/var/lib/postgresql/data
|
- pg-data:/var/lib/postgresql/data
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 20s
|
timeout: 20s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
redis:
|
redis:
|
||||||
image: redis
|
image: redis
|
||||||
healthcheck:
|
healthcheck:
|
||||||
@@ -26,14 +25,11 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 20s
|
timeout: 20s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
web:
|
web:
|
||||||
image: glitchtip/glitchtip
|
image: glitchtip/glitchtip
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
- postgres
|
||||||
condition: service_healthy
|
- redis
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_GLITCHTIP_8080
|
- SERVICE_FQDN_GLITCHTIP_8080
|
||||||
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
|
||||||
@@ -50,16 +46,14 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 20s
|
timeout: 20s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
worker:
|
worker:
|
||||||
image: glitchtip/glitchtip
|
image: glitchtip/glitchtip
|
||||||
command: ./bin/run-celery-with-beat.sh
|
command: ./bin/run-celery-with-beat.sh
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
- postgres
|
||||||
condition: service_healthy
|
- redis
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
environment:
|
||||||
|
- SERVICE_FQDN_GLITCHTIP
|
||||||
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
|
||||||
- SECRET_KEY=$SERVICE_BASE64_64_ENCRYPTION
|
- SECRET_KEY=$SERVICE_BASE64_64_ENCRYPTION
|
||||||
- EMAIL_URL=${EMAIL_URL:-consolemail://}
|
- EMAIL_URL=${EMAIL_URL:-consolemail://}
|
||||||
@@ -74,15 +68,12 @@ services:
|
|||||||
interval: 5s
|
interval: 5s
|
||||||
timeout: 20s
|
timeout: 20s
|
||||||
retries: 10
|
retries: 10
|
||||||
|
|
||||||
migrate:
|
migrate:
|
||||||
image: glitchtip/glitchtip
|
image: glitchtip/glitchtip
|
||||||
restart: "no"
|
restart: "no"
|
||||||
depends_on:
|
depends_on:
|
||||||
postgres:
|
- postgres
|
||||||
condition: service_healthy
|
- redis
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
command: "./manage.py migrate"
|
command: "./manage.py migrate"
|
||||||
environment:
|
environment:
|
||||||
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
|
- DATABASE_URL=postgres://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgres:5432/${POSTGRESQL_DATABASE:-glitchtip}
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
# documentation: https://github.com/hay-kot/homebox
|
|
||||||
# slogan: Homebox is a self-hosted file management solution.
|
|
||||||
# tags: homebox,file-management,self-hosted
|
|
||||||
# logo: svgs/homebox.svg
|
|
||||||
# port: 7745
|
|
||||||
|
|
||||||
services:
|
|
||||||
homebox:
|
|
||||||
image: ghcr.io/hay-kot/homebox:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_HOMEBOX_7745
|
|
||||||
- HBOX_LOG_LEVEL=${HBOX_LOG_LEVEL:-info}
|
|
||||||
- HBOX_LOG_FORMAT=${HBOX_LOG_FORMAT:-text}
|
|
||||||
- HBOX_WEB_MAX_UPLOAD_SIZE=${HBOX_WEB_MAX_UPLOAD_SIZE:-10}
|
|
||||||
volumes:
|
|
||||||
- homebox-data:/data/
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:7745"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,76 +0,0 @@
|
|||||||
# documentation: https://immich.app/docs/overview/introduction
|
|
||||||
# slogan: Self-hosted photo and video management solution.
|
|
||||||
# tags: photo,video,management,server,cloud,storage,sharing,metadata,face,recognition
|
|
||||||
# logo: svgs/immich.svg
|
|
||||||
# port: 2283
|
|
||||||
|
|
||||||
services:
|
|
||||||
immich:
|
|
||||||
image: ghcr.io/immich-app/immich-server:release
|
|
||||||
# extends:
|
|
||||||
# file: hwaccel.transcoding.yml
|
|
||||||
# service: cpu # set to one of [nvenc, quicksync, rkmpp, vaapi, vaapi-wsl] for accelerated transcoding
|
|
||||||
volumes:
|
|
||||||
- immich-uploads:/usr/src/app/upload
|
|
||||||
- /etc/localtime:/etc/localtime:ro
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_IMMICH_3001
|
|
||||||
- UPLOAD_LOCATION=./library
|
|
||||||
- DB_DATA_LOCATION=./postgres
|
|
||||||
- DB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
|
||||||
- DB_USERNAME=$SERVICE_USER_POSTGRES
|
|
||||||
- DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich}
|
|
||||||
- TZ=${TZ:-Etc/UTC}
|
|
||||||
depends_on:
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
database:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
disable: false
|
|
||||||
|
|
||||||
immich-machine-learning:
|
|
||||||
container_name: immich_machine_learning
|
|
||||||
# For hardware acceleration, add one of -[armnn, cuda, openvino] to the image tag.
|
|
||||||
# Example tag: ${IMMICH_VERSION:-release}-cuda
|
|
||||||
image: ghcr.io/immich-app/immich-machine-learning:release
|
|
||||||
# extends: # uncomment this section for hardware acceleration - see https://immich.app/docs/features/ml-hardware-acceleration
|
|
||||||
# file: hwaccel.ml.yml
|
|
||||||
# service: cpu # set to one of [armnn, cuda, openvino, openvino-wsl] for accelerated inference - use the `-wsl` version for WSL2 where applicable
|
|
||||||
volumes:
|
|
||||||
- immich-model-cache:/cache
|
|
||||||
environment:
|
|
||||||
- UPLOAD_LOCATION=./library
|
|
||||||
- DB_DATA_LOCATION=./postgres
|
|
||||||
- DB_PASSWORD=$SERVICE_PASSWORD_POSTGRES
|
|
||||||
- DB_USERNAME=$SERVICE_USER_POSTGRES
|
|
||||||
- DB_DATABASE_NAME=${DB_DATABASE_NAME:-immich}
|
|
||||||
- TZ=${TZ:-Etc/UTC}
|
|
||||||
healthcheck:
|
|
||||||
disable: false
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7.4-alpine
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- PING
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 20
|
|
||||||
|
|
||||||
database:
|
|
||||||
image: docker.io/tensorchord/pgvecto-rs:pg14-v0.2.0@sha256:90724186f0a3517cf6914295b5ab410db9ce23190a2d9d0b9dd6463e3fa298f0
|
|
||||||
environment:
|
|
||||||
POSTGRES_PASSWORD: ${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
POSTGRES_USER: ${SERVICE_USER_POSTGRES}
|
|
||||||
POSTGRES_DB: ${DB_DATABASE_NAME:-immich}
|
|
||||||
POSTGRES_INITDB_ARGS: '--data-checksums'
|
|
||||||
volumes:
|
|
||||||
- immich-postgres-data:/var/lib/postgresql/data
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
46
templates/compose/joplin.yaml
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
# documentation: https://github.com/laurent22/joplin/blob/dev/packages/server/README.md
|
||||||
|
# slogan: Self-hosted sync server for Joplin
|
||||||
|
# tags: joplin
|
||||||
|
# logo: svgs/joplin.png
|
||||||
|
# port: 22300
|
||||||
|
|
||||||
|
services:
|
||||||
|
postgres:
|
||||||
|
image: 'postgres:16'
|
||||||
|
volumes:
|
||||||
|
- joplin-postgresql-data:/var/lib/postgresql/data'
|
||||||
|
environment:
|
||||||
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_POSTGRES}
|
||||||
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||||
|
- POSTGRES_DB=joplin
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- pg_isready
|
||||||
|
- -d
|
||||||
|
- joplin
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
|
||||||
|
joplin:
|
||||||
|
image: 'joplin/server:latest'
|
||||||
|
platform: 'linux/amd64'
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_JOPLIN_22300
|
||||||
|
- APP_BASE_URL=${SERVICE_FQDN_JOPLIN}
|
||||||
|
- DB_CLIENT=pg
|
||||||
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_POSTGRES}
|
||||||
|
- POSTGRES_DATABASE=joplin
|
||||||
|
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
||||||
|
- POSTGRES_PORT=5432
|
||||||
|
- POSTGRES_HOST=postgres
|
||||||
|
# Default login is "admin@localhost" and password "admin"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "bash -c ':> /dev/tcp/127.0.0.1/22300' || exit 1"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 3
|
||||||
54
templates/compose/keycloak-with-postgres.yaml
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
# documentation: https://www.keycloak.org
|
||||||
|
# slogan: Keycloak is an open-source Identity and Access Management tool.
|
||||||
|
# tags: keycloak,identity,access,management,iam,authentication,authorization,security,oauth2,openid-connect,sso,single-sign-on,saml,rbac,ldap,jwt,social-login
|
||||||
|
# logo: svgs/keycloak.svg
|
||||||
|
# port: 8080
|
||||||
|
|
||||||
|
services:
|
||||||
|
keycloak:
|
||||||
|
image: quay.io/keycloak/keycloak:25.0.2
|
||||||
|
command:
|
||||||
|
- start
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_KEYCLOAK_8080
|
||||||
|
- TZ=${TIMEZONE:-UTC}
|
||||||
|
- KEYCLOAK_ADMIN=${SERVICE_USER_ADMIN}
|
||||||
|
- KEYCLOAK_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
||||||
|
- KC_DB=postgres
|
||||||
|
- KC_DB_USERNAME=${SERVICE_USER_DATABASE}
|
||||||
|
- KC_DB_PASSWORD=${SERVICE_PASSWORD_64_DATABASE}
|
||||||
|
- KC_DB_URL_PORT=5432
|
||||||
|
- KC_DB_URL=jdbc:postgresql://postgres/${POSTGRESQL_DATABASE:-keycloak}
|
||||||
|
- KC_HOSTNAME=${SERVICE_FQDN_KEYCLOAK}
|
||||||
|
- KC_HTTP_ENABLED=${KC_HTTP_ENABLED:-true}
|
||||||
|
- KC_HEALTH_ENABLED=${KC_HEALTH_ENABLED:-true}
|
||||||
|
- KC_PROXY_HEADERS=${KC_PROXY_HEADERS:-xforwarded}
|
||||||
|
volumes:
|
||||||
|
- keycloak-data:/opt/keycloak/data
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"exec 3<>/dev/tcp/127.0.0.1/9000;echo -e 'GET /health/ready HTTP/1.1\r\nhost: http://localhost\r\nConnection: close\r\n\r\n' >&3;if [ $? -eq 0 ]; then echo 'Healthcheck Successful';exit 0;else echo 'Healthcheck Failed';exit 1;fi;",
|
||||||
|
]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
volumes:
|
||||||
|
- keycloak-postgresql-data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${SERVICE_USER_DATABASE}
|
||||||
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_DATABASE}
|
||||||
|
- POSTGRES_DB=${POSTGRESQL_DATABASE:-keycloak}
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD-SHELL
|
||||||
|
- pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
31
templates/compose/keycloak.yaml
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
# documentation: https://www.keycloak.org
|
||||||
|
# slogan: Keycloak is an open-source Identity and Access Management tool.
|
||||||
|
# tags: keycloak,identity,access,management,iam,authentication,authorization,security,oauth2,openid-connect,sso,single-sign-on,saml,rbac,ldap,jwt,social-login
|
||||||
|
# logo: svgs/keycloak.svg
|
||||||
|
# port: 8080
|
||||||
|
|
||||||
|
services:
|
||||||
|
keycloak:
|
||||||
|
image: quay.io/keycloak/keycloak:25.0.2
|
||||||
|
command:
|
||||||
|
- start
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_KEYCLOAK_8080
|
||||||
|
- TZ=${TIMEZONE:-UTC}
|
||||||
|
- KEYCLOAK_ADMIN=${SERVICE_USER_ADMIN}
|
||||||
|
- KEYCLOAK_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
||||||
|
- KC_HOSTNAME=${SERVICE_FQDN_KEYCLOAK}
|
||||||
|
- KC_HTTP_ENABLED=${KC_HTTP_ENABLED:-true}
|
||||||
|
- KC_HEALTH_ENABLED=${KC_HEALTH_ENABLED:-true}
|
||||||
|
- KC_PROXY_HEADERS=${KC_PROXY_HEADERS:-xforwarded}
|
||||||
|
volumes:
|
||||||
|
- keycloak-data:/opt/keycloak/data
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
[
|
||||||
|
"CMD-SHELL",
|
||||||
|
"exec 3<>/dev/tcp/127.0.0.1/9000;echo -e 'GET /health/ready HTTP/1.1\r\nhost: http://localhost\r\nConnection: close\r\n\r\n' >&3;if [ $? -eq 0 ]; then echo 'Healthcheck Successful';exit 0;else echo 'Healthcheck Failed';exit 1;fi;",
|
||||||
|
]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
# documentation: https://www.kimai.org/
|
|
||||||
# slogan: Open source time-tracking app.
|
|
||||||
# tags: time-tracking, open-source
|
|
||||||
# logo: svgs/kimai.svg
|
|
||||||
# port: 8001
|
|
||||||
|
|
||||||
services:
|
|
||||||
mysql:
|
|
||||||
image: mysql:8
|
|
||||||
volumes:
|
|
||||||
- kimai-mysql-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-kimai}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
|
||||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOT}
|
|
||||||
command: --default-storage-engine innodb
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
kimai:
|
|
||||||
image: kimai/kimai2:apache-latest
|
|
||||||
container_name: kimai
|
|
||||||
depends_on:
|
|
||||||
mysql:
|
|
||||||
condition: service_healthy
|
|
||||||
volumes:
|
|
||||||
- kimai-data:/opt/kimai/var/data
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_KIMAI_8001
|
|
||||||
- APP_SECRET=${SERVICE_PASSWORD_APPSECRET}
|
|
||||||
- MAILER_FROM=${MAILER_FROM:-kimai@example.com}
|
|
||||||
- MAILER_URL=${MAILER_URL:-null://null}
|
|
||||||
- ADMINMAIL=${ADMINMAIL:-admin@kimai.local}
|
|
||||||
- ADMINPASS=${SERVICE_PASSWORD_ADMINPASS}
|
|
||||||
- DATABASE_URL=mysql://${SERVICE_USER_MYSQL}:${SERVICE_PASSWORD_MYSQL}@mysql/${MYSQL_DATABASE}?charset=utf8mb4&serverVersion=8.3.0
|
|
||||||
- TRUSTED_HOSTS=localhost
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:8001"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 15
|
|
||||||
@@ -1,22 +1,31 @@
|
|||||||
# ignore: true
|
|
||||||
# documentation: https://docs.mattermost.com
|
# documentation: https://docs.mattermost.com
|
||||||
# slogan: Mattermost is an open source, self-hosted Slack-alternative.
|
# slogan: Mattermost is an open source, self-hosted Slack-alternative.
|
||||||
# tags: mattermost,slack,alternative
|
# tags: mattermost,slack,alternative
|
||||||
|
# logo: svgs/mattermost.svg
|
||||||
|
# port: 8065
|
||||||
|
|
||||||
services:
|
services:
|
||||||
mattermost:
|
mattermost:
|
||||||
image: mattermost/mattermost-team-edition:9
|
image: mattermost/mattermost-team-edition:release-10
|
||||||
|
platform: linux/amd64
|
||||||
volumes:
|
volumes:
|
||||||
- mattermost-data:/mattermost
|
- mattermost-data:/mattermost
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_MATTERMOST
|
- SERVICE_FQDN_MATTERMOST_8065
|
||||||
|
- MM_SERVICESETTINGS_SITEURL=${SERVICE_FQDN_MATTERMOST}
|
||||||
- TZ=${TZ:-UTC}
|
- TZ=${TZ:-UTC}
|
||||||
- MM_SQLSETTINGS_DRIVERNAME=postgres
|
- MM_SQLSETTINGS_DRIVERNAME=postgres
|
||||||
- MM_SQLSETTINGS_DATASOURCE=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/$POSTGRES_DB?sslmode=disable&connect_timeout=10
|
- MM_SQLSETTINGS_DATASOURCE=postgres://$SERVICE_USER_POSTGRES:$SERVICE_PASSWORD_POSTGRES@postgres:5432/$POSTGRES_DB?sslmode=disable&connect_timeout=10
|
||||||
- MM_BLEVESETTINGS_INDEXDIR=/mattermost/bleve-indexes
|
- MM_BLEVESETTINGS_INDEXDIR=/mattermost/bleve-indexes
|
||||||
- MM_SERVICESETTINGS_SITEURL=$SERVICE_FQDN_MATTERMOST
|
|
||||||
depends_on:
|
depends_on:
|
||||||
- postgres
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:8065"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
|
|
||||||
postgres:
|
postgres:
|
||||||
image: postgres:16-alpine
|
image: postgres:16-alpine
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
52
templates/compose/mautic4.yaml
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
# documentation: https://www.mautic.org/
|
||||||
|
# slogan: Mautic v4 Open Source Marketing Automation
|
||||||
|
# tags: php,mautic,marketing,automation,email,service,4,open,source,crm
|
||||||
|
# logo: svgs/mautic.svg
|
||||||
|
# port: 80
|
||||||
|
|
||||||
|
services:
|
||||||
|
rabbitmq:
|
||||||
|
image: 'rabbitmq:3'
|
||||||
|
environment:
|
||||||
|
- 'RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST:-mautic}'
|
||||||
|
volumes:
|
||||||
|
- 'rabbitmq-data:/var/lib/rabbitmq'
|
||||||
|
database:
|
||||||
|
image: powertic/percona-docker
|
||||||
|
environment:
|
||||||
|
MYSQL_ROOT_PASSWORD: ${SERVICE_PASSWORD_64_MYSQL}
|
||||||
|
volumes:
|
||||||
|
- mautic-database-data:/var/lib/mysql
|
||||||
|
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --sql-mode=""
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
|
||||||
|
mautic:
|
||||||
|
image: mautic/mautic:v4-fpm
|
||||||
|
volumes:
|
||||||
|
- mautic-data:/var/www/html
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_MAUTIC_80
|
||||||
|
- MAUTIC_DB_HOST=database
|
||||||
|
- MAUTIC_DB_USER=${SERVICE_USER_MYSQL}
|
||||||
|
- MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}
|
||||||
|
- MAUTIC_DB_NAME=mautic4
|
||||||
|
- MAUTIC_RUN_MIGRATIONS=${MAUTIC_RUN_MIGRATIONS:-true}
|
||||||
|
- MAUTIC_RUN_CRON_JOBS=${MAUTIC_RUN_CRON_JOBS:-false}
|
||||||
|
- MAUTIC_RABIITMQ_HOST=rabbitmq
|
||||||
|
- MAUTIC_RABIITMQ_PORT=5672
|
||||||
|
- MAUTIC_RABIITMQ_USER=${SERVICE_USER_RABBITMQ}
|
||||||
|
- MAUTIC_RABIITMQ_PASSWORD=${SERVICE_PASSWORD_RABBITMQ}
|
||||||
|
- MAUTIC_RABIITMQ_VHOST=${RABBITMQ_DEFAULT_VHOST:-mautic}
|
||||||
|
- MAUTIC_ADMIN_EMAIL=${MAUTIC_ADMIN_EMAIL:-admin@example.com}
|
||||||
|
- MAUTIC_ADMIN_PASSWORD=${SERVICE_PASSWORD_ADMIN}
|
||||||
|
- MAUTIC_ADMIN_FIRSTNAME=${MAUTIC_ADMIN_FIRSTNAME:-Admin}
|
||||||
|
- MAUTIC_ADMIN_LASTNAME=${MAUTIC_ADMIN_LASTNAME:-User}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:8880"]
|
||||||
|
interval: 2s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
128
templates/compose/mautic5.yaml
Normal file
@@ -0,0 +1,128 @@
|
|||||||
|
# documentation: https://www.mautic.org/
|
||||||
|
# slogan: Mautic v5 Open Source Marketing Automation
|
||||||
|
# tags: php,mautic,marketing,automation,email,service,5,open,source,crm
|
||||||
|
# logo: svgs/mautic.svg
|
||||||
|
# port: 80
|
||||||
|
|
||||||
|
services:
|
||||||
|
mysql:
|
||||||
|
image: 'mysql:8.0'
|
||||||
|
environment:
|
||||||
|
- 'MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_64_MYSQLROOT}'
|
||||||
|
- 'MYSQL_DATABASE=${MYSQL_DATABASE:-mautic}'
|
||||||
|
- 'MYSQL_USER=${SERVICE_USER_MYSQL}'
|
||||||
|
- 'MYSQL_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}'
|
||||||
|
volumes:
|
||||||
|
- 'mysql-data:/var/lib/mysql'
|
||||||
|
healthcheck:
|
||||||
|
test: 'mysqladmin ping --silent --user=$$SERVICE_USER_MYSQL --password=$$SERVICE_PASSWORD_64_MYSQL'
|
||||||
|
start_period: 30s
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 5
|
||||||
|
rabbitmq:
|
||||||
|
image: 'rabbitmq:3'
|
||||||
|
environment:
|
||||||
|
- 'RABBITMQ_DEFAULT_VHOST=${RABBITMQ_DEFAULT_VHOST:-mautic}'
|
||||||
|
healthcheck:
|
||||||
|
test: rabbitmq-diagnostics -q ping
|
||||||
|
interval: 5s
|
||||||
|
timeout: 30s
|
||||||
|
retries: 10
|
||||||
|
volumes:
|
||||||
|
- 'rabbitmq-data:/var/lib/rabbitmq'
|
||||||
|
mautic_web:
|
||||||
|
image: 'mautic/mautic:latest'
|
||||||
|
volumes:
|
||||||
|
- 'mautic_data/config:/var/www/html/config:z'
|
||||||
|
- 'mautic_data/logs:/var/www/html/var/logs:z'
|
||||||
|
- 'mautic_data/media/files:/var/www/html/docroot/media/files:z'
|
||||||
|
- 'mautic_data/media/images:/var/www/html/docroot/media/images:z'
|
||||||
|
- 'mautic_data/plugins:/var/www/html/docroot/plugins:z'
|
||||||
|
- 'mautic_data/vendor:/var/www/html/vendor:z'
|
||||||
|
- 'mautic_data/bin:/var/www/html/bin:z'
|
||||||
|
- 'mautic_data/cron:/opt/mautic/cron:z'
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_MAUTIC_80
|
||||||
|
- 'DOCKER_MAUTIC_LOAD_TEST_DATA=${MAUTIC_LOAD_TEST_DATA:-false}'
|
||||||
|
- 'DOCKER_MAUTIC_RUN_MIGRATIONS=${MAUTIC_RUN_MIGRATIONS:-false}'
|
||||||
|
- 'MAUTIC_DB_HOST=${MYSQL_HOST:-mysql}'
|
||||||
|
- 'MAUTIC_DB_PORT=${MYSQL_PORT:-3306}'
|
||||||
|
- 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE:-mautic}'
|
||||||
|
- 'MAUTIC_DB_USER=${SERVICE_USER_MYSQL}'
|
||||||
|
- 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}'
|
||||||
|
- 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL:-amqp://guest:guest@rabbitmq:5672/mautic/messages}'
|
||||||
|
- 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT:-amqp://guest:guest@rabbitmq:5672/mautic/messages}'
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- curl
|
||||||
|
- '-f'
|
||||||
|
- 'http://localhost'
|
||||||
|
interval: 15s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
mautic_cron:
|
||||||
|
image: 'mautic/mautic:latest'
|
||||||
|
volumes:
|
||||||
|
- 'mautic_data/config:/var/www/html/config:z'
|
||||||
|
- 'mautic_data/logs:/var/www/html/var/logs:z'
|
||||||
|
- 'mautic_data/media/files:/var/www/html/docroot/media/files:z'
|
||||||
|
- 'mautic_data/media/images:/var/www/html/docroot/media/images:z'
|
||||||
|
- 'mautic_data/plugins:/var/www/html/docroot/plugins:z'
|
||||||
|
- 'mautic_data/vendor:/var/www/html/vendor:z'
|
||||||
|
- 'mautic_data/bin:/var/www/html/bin:z'
|
||||||
|
- 'mautic_data/cron:/opt/mautic/cron:z'
|
||||||
|
environment:
|
||||||
|
- DOCKER_MAUTIC_ROLE=mautic_cron
|
||||||
|
- 'MAUTIC_DB_HOST=${MYSQL_HOST:-mysql}'
|
||||||
|
- 'MAUTIC_DB_PORT=${MYSQL_PORT:-3306}'
|
||||||
|
- 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE:-mautic}'
|
||||||
|
- 'MAUTIC_DB_USER=${SERVICE_USER_MYSQL}'
|
||||||
|
- 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}'
|
||||||
|
- 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL:-amqp://guest:guest@rabbitmq:5672/mautic/messages}'
|
||||||
|
- 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT:-amqp://guest:guest@rabbitmq:5672/mautic/messages}'
|
||||||
|
depends_on:
|
||||||
|
mautic_web:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- curl
|
||||||
|
- '-f'
|
||||||
|
- 'http://localhost'
|
||||||
|
interval: 15s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
|
mautic_worker:
|
||||||
|
image: 'mautic/mautic:latest'
|
||||||
|
volumes:
|
||||||
|
- 'mautic_data/config:/var/www/html/config:z'
|
||||||
|
- 'mautic_data/logs:/var/www/html/var/logs:z'
|
||||||
|
- 'mautic_data/media/files:/var/www/html/docroot/media/files:z'
|
||||||
|
- 'mautic_data/media/images:/var/www/html/docroot/media/images:z'
|
||||||
|
- 'mautic_data/plugins:/var/www/html/docroot/plugins:z'
|
||||||
|
- 'mautic_data/vendor:/var/www/html/vendor:z'
|
||||||
|
- 'mautic_data/bin:/var/www/html/bin:z'
|
||||||
|
- 'mautic_data/cron:/opt/mautic/cron:z'
|
||||||
|
environment:
|
||||||
|
- DOCKER_MAUTIC_ROLE=mautic_worker
|
||||||
|
- 'MAUTIC_DB_HOST=${MYSQL_HOST:-mysql}'
|
||||||
|
- 'MAUTIC_DB_PORT=${MYSQL_PORT:-3306}'
|
||||||
|
- 'MAUTIC_DB_DATABASE=${MYSQL_DATABASE:-mautic}'
|
||||||
|
- 'MAUTIC_DB_USER=${SERVICE_USER_MYSQL}'
|
||||||
|
- 'MAUTIC_DB_PASSWORD=${SERVICE_PASSWORD_64_MYSQL}'
|
||||||
|
- 'MAUTIC_MESSENGER_DSN_EMAIL=${MAUTIC_MESSENGER_DSN_EMAIL:-amqp://guest:guest@rabbitmq:5672/mautic/messages}'
|
||||||
|
- 'MAUTIC_MESSENGER_DSN_HIT=${MAUTIC_MESSENGER_DSN_HIT:-amqp://guest:guest@rabbitmq:5672/mautic/messages}'
|
||||||
|
depends_on:
|
||||||
|
mautic_web:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test:
|
||||||
|
- CMD
|
||||||
|
- curl
|
||||||
|
- '-f'
|
||||||
|
- 'http://localhost'
|
||||||
|
interval: 15s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 15
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# documentation: https://docs.nextcloud.com
|
|
||||||
# slogan: NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.
|
|
||||||
# tags: cloud, collaboration, communication, filestorage, data
|
|
||||||
# logo: svgs/nextcloud.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
nextcloud:
|
|
||||||
image: lscr.io/linuxserver/nextcloud:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_NEXTCLOUD_80
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TZ:-Europe/Paris}
|
|
||||||
- MYSQL_DATABASE=${MARIADB_DATABASE:-nextcloud}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MARIADB}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
|
||||||
- MYSQL_HOST=nextcloud-db
|
|
||||||
- REDIS_HOST=redis
|
|
||||||
- REDIS_PORT=6379
|
|
||||||
volumes:
|
|
||||||
- nextcloud-config:/config
|
|
||||||
- nextcloud-data:/data
|
|
||||||
depends_on:
|
|
||||||
nextcloud-db:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 15
|
|
||||||
|
|
||||||
nextcloud-db:
|
|
||||||
image: mariadb:11
|
|
||||||
volumes:
|
|
||||||
- nextcloud-mariadb-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOT}
|
|
||||||
- MYSQL_DATABASE=${MARIADB_DATABASE:-nextcloud}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MARIADB}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: "redis:7.4-alpine"
|
|
||||||
volumes:
|
|
||||||
- "nextcloud-redis-data:/data"
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- PING
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 20
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# documentation: https://docs.nextcloud.com
|
|
||||||
# slogan: NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.
|
|
||||||
# tags: cloud, collaboration, communication, filestorage, data
|
|
||||||
# logo: svgs/nextcloud.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
nextcloud:
|
|
||||||
image: lscr.io/linuxserver/nextcloud:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_NEXTCLOUD_80
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TZ:-Europe/Paris}
|
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-nextcloud}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
|
||||||
- MYSQL_HOST=nextcloud-db
|
|
||||||
- REDIS_HOST=redis
|
|
||||||
- REDIS_PORT=6379
|
|
||||||
volumes:
|
|
||||||
- nextcloud-config:/config
|
|
||||||
- nextcloud-data:/data
|
|
||||||
depends_on:
|
|
||||||
nextcloud-db:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 15
|
|
||||||
|
|
||||||
nextcloud-db:
|
|
||||||
image: mysql:8.4.2
|
|
||||||
volumes:
|
|
||||||
- nextcloud-mysql-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOT}
|
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-nextcloud}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MYSQL}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MYSQL}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: "redis:7.4-alpine"
|
|
||||||
volumes:
|
|
||||||
- "nextcloud-redis-data:/data"
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- PING
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 20
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# documentation: https://docs.nextcloud.com
|
|
||||||
# slogan: NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.
|
|
||||||
# tags: cloud, collaboration, communication, filestorage, data
|
|
||||||
# logo: svgs/nextcloud.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
nextcloud:
|
|
||||||
image: lscr.io/linuxserver/nextcloud:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_NEXTCLOUD_80
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
- TZ=${TZ:-Europe/Paris}
|
|
||||||
- POSTGRES_DB=${POSTGRES_DB:-nextcloud}
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
- POSTGRES_HOST=nextcloud-db
|
|
||||||
- REDIS_HOST=redis
|
|
||||||
- REDIS_PORT=6379
|
|
||||||
volumes:
|
|
||||||
- nextcloud-config:/config
|
|
||||||
- nextcloud-data:/data
|
|
||||||
depends_on:
|
|
||||||
nextcloud-db:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 15
|
|
||||||
|
|
||||||
nextcloud-db:
|
|
||||||
image: postgres:16-alpine
|
|
||||||
volumes:
|
|
||||||
- nextcloud-postgresql-data:/var/lib/postgresql/data
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
- POSTGRES_DB=${POSTGRES_DB:-nextcloud}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: "redis:7.4-alpine"
|
|
||||||
volumes:
|
|
||||||
- "nextcloud-redis-data:/data"
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- PING
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 20
|
|
||||||
@@ -2,16 +2,15 @@
|
|||||||
# slogan: NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.
|
# slogan: NextCloud is a self-hosted, open-source platform that provides file storage, collaboration, and communication tools for seamless data management.
|
||||||
# tags: cloud, collaboration, communication, filestorage, data
|
# tags: cloud, collaboration, communication, filestorage, data
|
||||||
# logo: svgs/nextcloud.svg
|
# logo: svgs/nextcloud.svg
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
services:
|
||||||
nextcloud:
|
nextcloud:
|
||||||
image: lscr.io/linuxserver/nextcloud:latest
|
image: lscr.io/linuxserver/nextcloud:latest
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_NEXTCLOUD_80
|
- SERVICE_FQDN_NEXTCLOUD
|
||||||
- PUID=1000
|
- PUID=1000
|
||||||
- PGID=1000
|
- PGID=1000
|
||||||
- TZ=${TZ:-Europe/Madrid}
|
- TZ=Europe/Madrid
|
||||||
volumes:
|
volumes:
|
||||||
- nextcloud-config:/config
|
- nextcloud-config:/config
|
||||||
- nextcloud-data:/data
|
- nextcloud-data:/data
|
||||||
|
|||||||
@@ -1,46 +0,0 @@
|
|||||||
# documentation: https://docs.ntfy.sh/
|
|
||||||
# slogan: ntfy is a simple HTTP-based pub-sub notification service. It allows you to send notifications to your phone or desktop via scripts from any computer, and/or using a REST API.
|
|
||||||
# tags: ntfy, notification, push notification, pub-sub, notify
|
|
||||||
# logo: svgs/ntfy.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
ntfy:
|
|
||||||
image: binwiederhier/ntfy
|
|
||||||
command:
|
|
||||||
- serve
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_NTFY_80
|
|
||||||
- NTFY_BASE_URL=${SERVICE_FQDN_NTFY}
|
|
||||||
- TZ=${TZ:-UTC}
|
|
||||||
- NTFY_CACHE_FILE=/var/cache/ntfy/cache.db
|
|
||||||
- NTFY_AUTH_FILE=/var/lib/ntfy/auth.db
|
|
||||||
- NTFY_UPSTREAM_BASE_URL=${UPSTREAM_BASE_URL:-https://ntfy.sh}
|
|
||||||
- NTFY_ENABLE_SIGNUP=${NTFY_ENABLE_SIGNUP:-true}
|
|
||||||
- NTFY_ENABLE_LOGIN=${NTFY_ENABLE_LOGIN:-true}
|
|
||||||
- NTFY_CACHE_DURATION=${NTFY_CACHE_DURATION:-24h}
|
|
||||||
- NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT=${NTFY_ATTACHMENT_TOTAL_SIZE_LIMIT:-1G}
|
|
||||||
- NTFY_ATTACHMENT_FILE_SIZE_LIMIT=${NTFY_ATTACHMENT_FILE_SIZE_LIMIT:-10M}
|
|
||||||
- NTFY_ATTACHMENT_EXPIRY_DURATION=${NTFY_ATTACHMENT_EXPIRY_DURATION:-24h}
|
|
||||||
- NTFY_SMTP_SENDER_ADDR=${NTFY_SMTP_SENDER_ADDR:-smtp.your-domain.de}
|
|
||||||
- NTFY_SMTP_SENDER_USER=${NTFY_SMTP_SENDER_USER:-no-reply@de}
|
|
||||||
- NTFY_SMTP_SENDER_PASS=${NTFY_SMTP_SENDER_PASS:-password}
|
|
||||||
- NTFY_SMTP_SENDER_FROM=${NTFY_SMTP_SENDER_FROM:-no-reply@de}
|
|
||||||
- NTFY_KEEPALIVE_INTERVAL=${NTFY_KEEPALIVE_INTERVAL:-5m}
|
|
||||||
- NTFY_MANAGER_INTERVAL=${NTFY_MANAGER_INTERVAL:-5m}
|
|
||||||
- NTFY_VISITOR_MESSAGE_DAILY_LIMIT=${NTFY_VISITOR_MESSAGE_DAILY_LIMIT:-100}
|
|
||||||
- NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT=${NTFY_VISITOR_ATTACHMENT_DAILY_BANDWIDTH_LIMIT:-1G}
|
|
||||||
- NTFY_UPSTREAM_ACCESS_TOKEN=${UPSTREAM_ACCESS_TOKEN}
|
|
||||||
- NTFY_AUTH_DEFAULT_ACCESS=${NTFY_AUTH_DEFAULT_ACCESS:-read-write}
|
|
||||||
- NTFY_WEB_PUSH_PUBLIC_KEY=${NTFY_WEB_PUSH_PUBLIC_KEY}
|
|
||||||
- NTFY_WEB_PUSH_PRIVATE_KEY=${NTFY_WEB_PUSH_PRIVATE_KEY}
|
|
||||||
- NTFY_WEB_PUSH_EMAIL_ADDRESS=${NTFY_WEB_PUSH_EMAIL_ADDRESS}
|
|
||||||
volumes:
|
|
||||||
- ntfy-cache:/var/cache/ntfy
|
|
||||||
- ntfy-db:/var/lib/ntfy/
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo '\"healthy\"\\s*:\\s*true' || exit 1"]
|
|
||||||
interval: 60s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 40s
|
|
||||||
43
templates/compose/onedev.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# documentation: https://docs.onedev.io/
|
||||||
|
# slogan: Git server with CI/CD, kanban, and packages. Seamless integration. Unparalleled experience.
|
||||||
|
# tags: git, scm, ci, cd, kanban, packages, devops, collaboration, code, repository, management
|
||||||
|
# logo: svgs/onedev.svg
|
||||||
|
# port: 6610
|
||||||
|
|
||||||
|
services:
|
||||||
|
onedev:
|
||||||
|
image: 1dev/server:latest
|
||||||
|
volumes:
|
||||||
|
- onedev-docker-sock:/var/run/docker.sock
|
||||||
|
- onedev-data:/opt/onedev
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_ONEDEV_6610
|
||||||
|
- hibernate_dialect=io.onedev.server.persistence.PostgreSQLDialect
|
||||||
|
- hibernate_connection_driver_class=org.postgresql.Driver
|
||||||
|
- hibernate_connection_url=jdbc:postgresql://postgres:5432/${POSTGRESQL_DATABASE:-onedev}
|
||||||
|
- hibernate_connection_username=${SERVICE_USER_DATABASE}
|
||||||
|
- hibernate_connection_password=${SERVICE_PASSWORD_64_DATABASE}
|
||||||
|
- initial_user=${SERVICE_USER_ONEDEV}
|
||||||
|
- initial_password=${SERVICE_PASSWORD_ONEDEV}
|
||||||
|
- initial_email=${ONEDEV_EMAIL:-mail@example.com}
|
||||||
|
- initial_server_url=${SERVICE_FQDN_ONEDEV}
|
||||||
|
- initial_ssh_root_url=${SSH_ROOT_URL:-ssh://changeme:22}
|
||||||
|
depends_on:
|
||||||
|
postgres:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "true"]
|
||||||
|
|
||||||
|
postgres:
|
||||||
|
image: postgres:16-alpine
|
||||||
|
volumes:
|
||||||
|
- onedev-postgresql-data:/var/lib/postgresql/data
|
||||||
|
environment:
|
||||||
|
- POSTGRES_USER=${SERVICE_USER_DATABASE}
|
||||||
|
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_64_DATABASE}
|
||||||
|
- POSTGRES_DB=${POSTGRESQL_DATABASE:-onedev}
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD-SHELL", "pg_isready"]
|
||||||
|
interval: 5s
|
||||||
|
timeout: 20s
|
||||||
|
retries: 10
|
||||||
@@ -1,73 +0,0 @@
|
|||||||
# ignore: true
|
|
||||||
# documentation: https://owncloud.com/docs
|
|
||||||
# slogan: OwnCloud with Open Web UI integrates file management with a powerful, user-friendly interface.
|
|
||||||
# tags: owncloud,file-management,open-web-ui,integration,cloud
|
|
||||||
# logo: svgs/owncloud.svg
|
|
||||||
# port: 8080
|
|
||||||
|
|
||||||
services:
|
|
||||||
owncloud:
|
|
||||||
image: owncloud/server:latest
|
|
||||||
depends_on:
|
|
||||||
mariadb:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_OWNCLOUD_8080
|
|
||||||
- OWNCLOUD_DOMAIN=${SERVICE_FQDN_OWNCLOUD}
|
|
||||||
- OWNCLOUD_TRUSTED_DOMAINS=${SERVICE_FQDN_OWNCLOUD} # This is a comma separated list of domains that are trusted by the server (No Protocol)
|
|
||||||
- OWNCLOUD_DB_TYPE=mysql
|
|
||||||
- OWNCLOUD_DB_HOST=mariadb
|
|
||||||
- OWNCLOUD_DB_NAME=${DB_NAME:-owncloud}
|
|
||||||
- OWNCLOUD_DB_USERNAME=${SERVICE_USER_MARIADB}
|
|
||||||
- OWNCLOUD_DB_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
|
||||||
- OWNCLOUD_ADMIN_USERNAME=${SERVICE_USER_OWNCLOUD}
|
|
||||||
- OWNCLOUD_ADMIN_PASSWORD=${SERVICE_PASSWORD_OWNCLOUD}
|
|
||||||
- OWNCLOUD_MYSQL_UTF8MB4=${MYSQL_UTF8MB4:-true}
|
|
||||||
- OWNCLOUD_REDIS_ENABLED=${REDIS_ENABLED:-true}
|
|
||||||
- OWNCLOUD_REDIS_HOST=redis
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- /usr/bin/healthcheck
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 5
|
|
||||||
volumes:
|
|
||||||
- owncloud-data:/mnt/data
|
|
||||||
|
|
||||||
mariadb:
|
|
||||||
image: mariadb:latest
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_MARIADBROOT}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_MARIADB}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_MARIADB}
|
|
||||||
- MYSQL_DATABASE=${DB_NAME:-owncloud}
|
|
||||||
- TZ=auto
|
|
||||||
command:
|
|
||||||
- "--character-set-server=utf8mb4"
|
|
||||||
- "--collation-server=utf8mb4_bin"
|
|
||||||
- "--max-allowed-packet=128M"
|
|
||||||
- "--innodb-log-file-size=64M"
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
volumes:
|
|
||||||
- owncloud-mysql-data:/var/lib/mysql
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:6
|
|
||||||
command:
|
|
||||||
- "--databases"
|
|
||||||
- "1"
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- ping
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
43
templates/compose/paperless.yaml
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
# documentation: https://docs.paperless-ngx.com/configuration/
|
||||||
|
# slogan: Paperless-ngx is a community-supported open-source document management system that transforms your physical documents into a searchable online archive so you can keep, well, less paper.
|
||||||
|
# logo: svgs/paperless.svg
|
||||||
|
# port: 8000
|
||||||
|
|
||||||
|
services:
|
||||||
|
redis:
|
||||||
|
image: docker.io/library/redis:7.4
|
||||||
|
volumes:
|
||||||
|
- paperless-redis:/data
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "redis-cli", "ping"]
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
|
||||||
|
paperless:
|
||||||
|
image: paperlessngx/paperless-ngx:latest
|
||||||
|
depends_on:
|
||||||
|
redis:
|
||||||
|
condition: service_healthy
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-fs", "-S", "--max-time", "2", "http://localhost:8000"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
volumes:
|
||||||
|
- paperless-data:/usr/src/paperless/data
|
||||||
|
- paperless-media:/usr/src/paperless/media
|
||||||
|
- type: bind
|
||||||
|
source: ./export
|
||||||
|
target: /usr/src/paperless/export
|
||||||
|
is_directory: true
|
||||||
|
- type: bind
|
||||||
|
source: ./consume
|
||||||
|
target: /usr/src/paperless/consume
|
||||||
|
is_directory: true
|
||||||
|
environment:
|
||||||
|
- SERVICE_FQDN_PAPERLESS_8000
|
||||||
|
- PAPERLESS_URL=$SERVICE_FQDN_PAPERLESS_8000
|
||||||
|
- PAPERLESS_ADMIN_PASSWORD=${SERVICE_PASSWORD_PAPERLESS}
|
||||||
|
- PAPERLESS_ADMIN_USER=${SERVICE_USER_PAPERLESS}
|
||||||
|
- PAPERLESS_REDIS=redis://redis:6379
|
||||||
|
- PAPERLESS_SECRET_KEY=${SERVICE_REALBASE64_64_PAPERLESS}
|
||||||
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
plausible:
|
plausible:
|
||||||
image: "ghcr.io/plausible/community-edition:v2.1.4"
|
image: "ghcr.io/plausible/community-edition:v2.1"
|
||||||
command: 'sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"'
|
command: 'sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"'
|
||||||
environment:
|
environment:
|
||||||
- SERVICE_FQDN_PLAUSIBLE
|
- SERVICE_FQDN_PLAUSIBLE
|
||||||
@@ -22,7 +22,7 @@ services:
|
|||||||
image: bytemark/smtp
|
image: bytemark/smtp
|
||||||
|
|
||||||
plausible_db:
|
plausible_db:
|
||||||
image: "postgres:16-alpine"
|
image: "postgres:14-alpine"
|
||||||
volumes:
|
volumes:
|
||||||
- "db-data:/var/lib/postgresql/data"
|
- "db-data:/var/lib/postgresql/data"
|
||||||
environment:
|
environment:
|
||||||
|
|||||||
@@ -1940,6 +1940,7 @@ services:
|
|||||||
- DEPLOYMENT=hobby
|
- DEPLOYMENT=hobby
|
||||||
- SITE_URL=$SERVICE_FQDN_WEB
|
- SITE_URL=$SERVICE_FQDN_WEB
|
||||||
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
||||||
|
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
@@ -1967,6 +1968,7 @@ services:
|
|||||||
- DEPLOYMENT=hobby
|
- DEPLOYMENT=hobby
|
||||||
- SITE_URL=$SERVICE_FQDN_WEB
|
- SITE_URL=$SERVICE_FQDN_WEB
|
||||||
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
||||||
|
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
@@ -1998,6 +2000,7 @@ services:
|
|||||||
- CLICKHOUSE_VERIFY=false
|
- CLICKHOUSE_VERIFY=false
|
||||||
- SITE_URL=$SERVICE_FQDN_WEB
|
- SITE_URL=$SERVICE_FQDN_WEB
|
||||||
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
||||||
|
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
- redis
|
- redis
|
||||||
@@ -2026,6 +2029,7 @@ services:
|
|||||||
# - DEPLOYMENT=hobby
|
# - DEPLOYMENT=hobby
|
||||||
# - SITE_URL=$SERVICE_FQDN_WEB
|
# - SITE_URL=$SERVICE_FQDN_WEB
|
||||||
# - SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
# - SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
||||||
|
# - 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
|
||||||
# depends_on:
|
# depends_on:
|
||||||
# - db
|
# - db
|
||||||
# - redis
|
# - redis
|
||||||
@@ -2109,6 +2113,7 @@ services:
|
|||||||
- DEPLOYMENT=hobby
|
- DEPLOYMENT=hobby
|
||||||
- SITE_URL=$SERVICE_FQDN_WEB
|
- SITE_URL=$SERVICE_FQDN_WEB
|
||||||
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
- SECRET_KEY=$SERVICE_BASE64_64_SECRETKEY
|
||||||
|
- 'ENCRYPTION_SALT_KEYS=${SERVICE_ENCRYPTION_SALT_KEYS:-00beef0000beef0000beef0000beef00}'
|
||||||
- TEMPORAL_HOST=temporal
|
- TEMPORAL_HOST=temporal
|
||||||
depends_on:
|
depends_on:
|
||||||
- db
|
- db
|
||||||
|
|||||||
@@ -1,48 +0,0 @@
|
|||||||
# documentation: https://docs.linuxserver.io/images/docker-qbittorrent/
|
|
||||||
# slogan: The qBittorrent project aims to provide an open-source software alternative to μTorrent.
|
|
||||||
# tags: torrent, streaming, webui
|
|
||||||
# logo: svgs/qbittorrent.svg
|
|
||||||
# port: 8080
|
|
||||||
|
|
||||||
services:
|
|
||||||
qbit:
|
|
||||||
image: "lscr.io/linuxserver/qbittorrent:latest"
|
|
||||||
environment:
|
|
||||||
- WEBUI_PORT=${WEBUI_PORT:-8080}
|
|
||||||
- PUID=1000
|
|
||||||
- PGID=1000
|
|
||||||
volumes:
|
|
||||||
- qbittorrent-config:/config
|
|
||||||
- qbittorrent-downloads:/downloads
|
|
||||||
- qbittorrent-torrents:/torrents
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- wget
|
|
||||||
- "-q"
|
|
||||||
- "--spider"
|
|
||||||
- "http://127.0.0.1:8080/"
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
vuetorrent-backend:
|
|
||||||
image: "ghcr.io/vuetorrent/vuetorrent-backend:latest"
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_QBITORRENT_8080
|
|
||||||
- PORT=${WEBUI_PORT:-8080}
|
|
||||||
- QBIT_BASE=${SERVICE_FQDN_QBITORRENT}
|
|
||||||
- RELEASE_TYPE=${RELEASE_TYPE:-stable}
|
|
||||||
- UPDATE_VT_CRON=${UPDATE_VT_CRON:-"0 * * * *"}
|
|
||||||
volumes:
|
|
||||||
- vuetorrent-config:/config
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- wget
|
|
||||||
- "-q"
|
|
||||||
- "--spider"
|
|
||||||
- "http://127.0.0.1:8080/"
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
# documentation: https://www.traccar.org/documentation/
|
|
||||||
# slogan: Traccar is a free and open source modern GPS tracking system.
|
|
||||||
# tags: traccar,gps,tracking,open,source
|
|
||||||
# logo: svgs/traccar.png
|
|
||||||
# port: 8082
|
|
||||||
|
|
||||||
services:
|
|
||||||
traccar:
|
|
||||||
image: traccar/traccar:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_TRACCAR_8082
|
|
||||||
- SERVICE_FQDN_TRACCARAPI_5159
|
|
||||||
- CONFIG_USE_ENVIRONMENT_VARIABLES=${CONFIG_USE_ENVIRONMENT_VARIABLES:-true}
|
|
||||||
- DATABASE_USER=${SERVICE_USER_POSTGRES}
|
|
||||||
- DATABASE_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
volumes:
|
|
||||||
- type: bind
|
|
||||||
source: ./srv/traccar/conf/traccar.xml
|
|
||||||
target: /opt/traccar/conf/traccar.xml
|
|
||||||
content: |
|
|
||||||
<?xml version='1.0' encoding='UTF-8'?>
|
|
||||||
<!DOCTYPE properties SYSTEM 'http://java.sun.com/dtd/properties.dtd'>
|
|
||||||
<properties>
|
|
||||||
<entry key='config.default'>./conf/default.xml</entry>
|
|
||||||
<entry key='database.driver'>org.postgresql.Driver</entry>
|
|
||||||
<entry key='database.url'>jdbc:postgresql://postgres:5432/traccar</entry>
|
|
||||||
</properties>
|
|
||||||
depends_on:
|
|
||||||
postgres:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8082/ping"]
|
|
||||||
interval: 30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 15s
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
image: postgres:16-alpine
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=$SERVICE_USER_POSTGRES
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
- POSTGRES_DB=${POSTGRESQL_DATABASE:-traccar}
|
|
||||||
volumes:
|
|
||||||
- traccar-postgresql-data:/var/lib/postgresql/data/
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# documentation: https://docs.unsend.dev/get-started/self-hosting
|
|
||||||
# slogan: Unsend is an open-source alternative to Resend, Sendgrid, Mailgun and Postmark etc.
|
|
||||||
# tags: resend, mailer, marketing emails, transaction emails, self-hosting, postmark
|
|
||||||
# logo: svgs/unsend.svg
|
|
||||||
# port: 3000
|
|
||||||
|
|
||||||
services:
|
|
||||||
postgres:
|
|
||||||
image: postgres:16
|
|
||||||
environment:
|
|
||||||
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
|
|
||||||
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
|
|
||||||
- POSTGRES_DB=${SERVICE_DB_POSTGRES:-unsend}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "pg_isready", "-U", "${SERVICE_USER_POSTGRES}"]
|
|
||||||
interval: 10s
|
|
||||||
timeout: 5s
|
|
||||||
retries: 5
|
|
||||||
volumes:
|
|
||||||
- unsend-postgres-data:/var/lib/postgresql/data
|
|
||||||
|
|
||||||
redis:
|
|
||||||
image: redis:7
|
|
||||||
volumes:
|
|
||||||
- unsend-redis-data:/data
|
|
||||||
command: ["redis-server", "--maxmemory-policy", "noeviction"]
|
|
||||||
healthcheck:
|
|
||||||
test:
|
|
||||||
- CMD
|
|
||||||
- redis-cli
|
|
||||||
- PING
|
|
||||||
interval: 5s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 20
|
|
||||||
|
|
||||||
unsend:
|
|
||||||
image: unsend/unsend:latest
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_UNSEND_3000
|
|
||||||
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${SERVICE_DB_POSTGRES:-unsend}
|
|
||||||
- NEXTAUTH_URL=${SERVICE_FQDN_UNSEND}
|
|
||||||
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
|
|
||||||
- AWS_ACCESS_KEY=${SERVICE_AWS_ACCESS_KEY}
|
|
||||||
- AWS_SECRET_KEY=${SERVICE_AWS_SECRET_KEY}
|
|
||||||
- AWS_DEFAULT_REGION=${SERVICE_AWS_DEFAULT_REGION}
|
|
||||||
- GITHUB_ID=${SERVICE_GITHUB_ID:-1234567890}
|
|
||||||
- GITHUB_SECRET=${SERVICE_GITHUB_SECRET:-abcde1234567890}
|
|
||||||
- REDIS_URL=redis://redis:6379
|
|
||||||
- NEXT_PUBLIC_IS_CLOUD=${NEXT_PUBLIC_IS_CLOUD:-false}
|
|
||||||
- API_RATE_LIMIT=${SERVICE_API_RATE_LIMIT:-1}
|
|
||||||
depends_on:
|
|
||||||
postgres:
|
|
||||||
condition: service_healthy
|
|
||||||
redis:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1:3000"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 15
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# documentation: https://docs.vvveb.com
|
|
||||||
# slogan: Powerful and easy to use cms to build websites, blogs or ecommerce stores.
|
|
||||||
# tags: cms, blog, content, management, ecommerce, page-builder, nocode, mysql, sqlite, pgsql
|
|
||||||
# logo: svgs/vvveb.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
vvveb:
|
|
||||||
image: vvveb/vvvebcms:latest
|
|
||||||
volumes:
|
|
||||||
- vvveb-data:/var/www/html
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_VVVEB_80
|
|
||||||
- DB_ENGINE=mysqli
|
|
||||||
- DB_HOST=mariadb
|
|
||||||
- DB_USER=${SERVICE_USER_VVVEB}
|
|
||||||
- DB_PASSWORD=${SERVICE_PASSWORD_VVVEB}
|
|
||||||
- DB_NAME=${MARIADB_DATABASE:-vvveb}
|
|
||||||
depends_on:
|
|
||||||
mariadb:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
mariadb:
|
|
||||||
image: mariadb:11
|
|
||||||
volumes:
|
|
||||||
- vvveb-mariadb-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOT}
|
|
||||||
- MYSQL_DATABASE=${MARIADB_DATABASE:-vvveb}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_VVVEB}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_VVVEB}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
# documentation: https://docs.vvveb.com
|
|
||||||
# slogan: Powerful and easy to use cms to build websites, blogs or ecommerce stores.
|
|
||||||
# tags: cms, blog, content, management, ecommerce, page-builder, nocode, mysql, sqlite, pgsql
|
|
||||||
# logo: svgs/vvveb.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
vvveb:
|
|
||||||
image: vvveb/vvvebcms:latest
|
|
||||||
volumes:
|
|
||||||
- vvveb-data:/var/www/html
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_VVVEB_80
|
|
||||||
- DB_ENGINE=mysqli
|
|
||||||
- DB_HOST=mysql
|
|
||||||
- DB_USER=${SERVICE_USER_VVVEB}
|
|
||||||
- DB_PASSWORD=${SERVICE_PASSWORD_VVVEB}
|
|
||||||
- DB_NAME=${MYSQL_DATABASE:-vvveb}
|
|
||||||
depends_on:
|
|
||||||
mysql:
|
|
||||||
condition: service_healthy
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
|
|
||||||
mysql:
|
|
||||||
image: mysql:8.4.2
|
|
||||||
volumes:
|
|
||||||
- vvveb-mysql-data:/var/lib/mysql
|
|
||||||
environment:
|
|
||||||
- MYSQL_ROOT_PASSWORD=${SERVICE_PASSWORD_ROOT}
|
|
||||||
- MYSQL_DATABASE=${MYSQL_DATABASE:-vvveb}
|
|
||||||
- MYSQL_USER=${SERVICE_USER_VVVEB}
|
|
||||||
- MYSQL_PASSWORD=${SERVICE_PASSWORD_VVVEB}
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
|
|
||||||
interval: 5s
|
|
||||||
timeout: 20s
|
|
||||||
retries: 10
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# documentation: https://docs.vvveb.com
|
|
||||||
# slogan: Powerful and easy to use cms to build websites, blogs or ecommerce stores.
|
|
||||||
# tags: cms, blog, content, management, ecommerce, page-builder, nocode, mysql, sqlite, pgsql
|
|
||||||
# logo: svgs/vvveb.svg
|
|
||||||
# port: 80
|
|
||||||
|
|
||||||
services:
|
|
||||||
vvveb:
|
|
||||||
image: vvveb/vvvebcms:latest
|
|
||||||
volumes:
|
|
||||||
- vvveb-data:/var/www/html
|
|
||||||
environment:
|
|
||||||
- SERVICE_FQDN_VVVEB_80
|
|
||||||
healthcheck:
|
|
||||||
test: ["CMD", "curl", "-f", "http://127.0.0.1"]
|
|
||||||
interval: 2s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 10
|
|
||||||
@@ -5,7 +5,6 @@
|
|||||||
},
|
},
|
||||||
"nightly": {
|
"nightly": {
|
||||||
"version": "4.0.0-beta.358"
|
"version": "4.0.0-beta.358"
|
||||||
|
|
||||||
},
|
},
|
||||||
"helper": {
|
"helper": {
|
||||||
"version": "1.0.2"
|
"version": "1.0.2"
|
||||||
|
|||||||