Revert "Revert "Feat: New services part 3""

This commit is contained in:
Andras Bacsai
2024-10-10 13:48:32 +02:00
committed by GitHub
parent ee54ecd985
commit 222d5f88be
45 changed files with 1502 additions and 16 deletions

View File

@@ -8,7 +8,6 @@ return [
// The release version of your application // The release version of your application
// Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')) // Example with dynamic git hash: trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD'))
'release' => '4.0.0-beta.358', 'release' => '4.0.0-beta.358',
// When left empty or `null` the Laravel environment will be used // When left empty or `null` the Laravel environment will be used
'environment' => config('app.env'), 'environment' => config('app.env'),

View File

@@ -1,4 +1,3 @@
<?php <?php
return '4.0.0-beta.358'; return '4.0.0-beta.358';

88
public/svgs/affine.svg Normal file
View File

@@ -0,0 +1,88 @@
<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>

After

Width:  |  Height:  |  Size: 9.0 KiB

View File

@@ -0,0 +1,7 @@
<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>

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
public/svgs/cryptgeon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
public/svgs/flowise.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

BIN
public/svgs/freshrss.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

11
public/svgs/homebox.svg Normal file
View File

@@ -0,0 +1,11 @@
<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>

After

Width:  |  Height:  |  Size: 2.7 KiB

66
public/svgs/immich.svg Normal file
View File

@@ -0,0 +1,66 @@
<?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>

After

Width:  |  Height:  |  Size: 5.5 KiB

67
public/svgs/kimai.svg Normal file
View File

@@ -0,0 +1,67 @@
<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>

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="187.043" height="188.815" viewBox="0 0 49.488 49.957"><defs><path id="a" d="M25.162 84.327h71.115v52.835H25.162z"/></defs><g style="fill:#1565c0"><g style="font-style:normal;font-weight:400;font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0;word-spacing:0;white-space:pre;shape-inside:url(#a);fill:#1565c0;fill-opacity:1;stroke:none"><path d="m34.996 90.121-.615.76q-2.754-1.416-3.948-2.951-1.168 1.617-3.767 2.889l-.656-.734q3.457-1.602 4.284-3.85l.878.274q-.176.517-.232.604 1.116 1.597 4.056 3.008zm.165 4.92-.676.646q-1.515-1.158-2.347-2.827-.547 1.55-2.268 2.806l-.677-.625q1.199-.796 1.798-1.876.6-1.08.682-3.08l.91.077q0 .27-.042.672l-.036.362q0 .274.305 1.033.31.755.9 1.468.594.708 1.451 1.344zm-4.8-1.375-.703.63q-.594-.78-1.163-1.276-.65 1.421-2.02 2.677l-.688-.615q1.23-1.096 1.768-2.201.542-1.106.697-2.796l.92.098q-.103.94-.367 1.917 1.003.863 1.556 1.566z" style="font-style:normal;font-variant:normal;font-weight:700;font-stretch:normal;font-family:'Adobe Garamond Pro';-inkscape-font-specification:'Adobe Garamond Pro Bold';fill:#1565c0" aria-label="众" transform="matrix(4.32051 0 0 4.32051 -102.427 -372.58)"/></g><g style="font-style:normal;font-weight:400;font-size:43.3964px;line-height:1.25;font-family:sans-serif;letter-spacing:0;word-spacing:0;fill:#1565c0;fill-opacity:1;stroke:none;stroke-width:1.08492"><path d="M84.814 94.883v-3.558H69.19V63.247h-4.036v31.636z" style="fill:#1565c0;stroke-width:1.08492" transform="translate(-65.155 -44.926)" aria-label="L"/></g></g></svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

1
public/svgs/ntfy.svg Normal file
View File

@@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 2.9 KiB

84
public/svgs/owncloud.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 50 KiB

View File

@@ -0,0 +1,16 @@
<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>

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
public/svgs/traccar.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

13
public/svgs/unsend.svg Normal file
View File

@@ -0,0 +1,13 @@
<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>

After

Width:  |  Height:  |  Size: 2.2 KiB

1
public/svgs/vvveb.svg Normal file
View File

@@ -0,0 +1 @@
<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>

After

Width:  |  Height:  |  Size: 407 B

View File

@@ -0,0 +1,75 @@
# 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

View File

@@ -0,0 +1,18 @@
# 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

View File

@@ -0,0 +1,41 @@
# 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

View File

@@ -0,0 +1,91 @@
# 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

View File

@@ -0,0 +1,35 @@
# 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

View File

@@ -0,0 +1,41 @@
# 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

View File

@@ -0,0 +1,41 @@
# 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

View File

@@ -0,0 +1,41 @@
# 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

View File

@@ -0,0 +1,20 @@
# 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

View File

@@ -12,12 +12,13 @@ services:
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL}
- POSTGRES_DB=${POSTGRESQL_DATABASE:-glitchtip} - POSTGRES_DB=${POSTGRESQL_DATABASE:-glitchtip}
volumes: volumes:
- pg-data:/var/lib/postgresql/data - glitchtip-postgres-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:
@@ -25,11 +26,14 @@ 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:
- redis condition: service_healthy
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}
@@ -46,14 +50,16 @@ 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:
- redis condition: service_healthy
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://}
@@ -68,12 +74,15 @@ 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:
- redis condition: service_healthy
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}

View File

@@ -0,0 +1,21 @@
# 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

View File

@@ -0,0 +1,76 @@
# 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

View File

@@ -0,0 +1,44 @@
# 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

View File

@@ -0,0 +1,19 @@
# documentation: https://libretranslate.com/docs/
# slogan: Free and open-source machine translation API, entirely self-hosted.
# tags: translate, api
# logo: svgs/libretranslate.svg
# port: 5000
services:
libretranslate:
image: "libretranslate/libretranslate:latest"
environment:
- SERVICE_FQDN_LIBRETRANSLATE_5000
- LT_SSL=true
- LT_UPDATE_MODELS=true
- LT_LOAD_ONLY=en,es,fr,de,ja
volumes:
- api-keys:/app/db
- models:/home/libretranslate/.local
healthcheck:
test: ["CMD-SHELL", "./venv/bin/python scripts/healthcheck.py"]

View File

@@ -0,0 +1,61 @@
# 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

View File

@@ -0,0 +1,61 @@
# 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

View File

@@ -0,0 +1,60 @@
# 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

View File

@@ -2,15 +2,16 @@
# 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 - SERVICE_FQDN_NEXTCLOUD_80
- PUID=1000 - PUID=1000
- PGID=1000 - PGID=1000
- TZ=Europe/Madrid - TZ=${TZ:-Europe/Madrid}
volumes: volumes:
- nextcloud-config:/config - nextcloud-config:/config
- nextcloud-data:/data - nextcloud-data:/data

View File

@@ -0,0 +1,46 @@
# 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

View File

@@ -0,0 +1,73 @@
# 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

View File

@@ -6,7 +6,7 @@
services: services:
plausible: plausible:
image: "ghcr.io/plausible/community-edition:v2.1" image: "ghcr.io/plausible/community-edition:v2.1.4"
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:14-alpine" image: "postgres:16-alpine"
volumes: volumes:
- "db-data:/var/lib/postgresql/data" - "db-data:/var/lib/postgresql/data"
environment: environment:

View File

@@ -0,0 +1,48 @@
# 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

View File

@@ -0,0 +1,50 @@
# 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

View File

@@ -0,0 +1,60 @@
# 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

View File

@@ -0,0 +1,41 @@
# 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

View File

@@ -0,0 +1,41 @@
# 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

View File

@@ -0,0 +1,18 @@
# 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

View File

@@ -1,10 +1,11 @@
{ {
"coolify": { "coolify": {
"v4": { "v4": {
"version": "4.0.0-beta.358" "version": "4.0.0-beta.357"
}, },
"nightly": { "nightly": {
"version": "4.0.0-beta.359" "version": "4.0.0-beta.358"
}, },
"helper": { "helper": {
"version": "1.0.2" "version": "1.0.2"