commit
a1f9a88ffd
@ -0,0 +1,46 @@ |
||||
## features |
||||
|
||||
- machine A (home computer) |
||||
- runs all services via docker-compose |
||||
- all services load-balanced by traefik |
||||
- is wireguard host |
||||
- machine B (cheap vps) |
||||
- is wireguard client |
||||
- reverse-proxies all traffic with Caddy2 |
||||
|
||||
## machine a (host) |
||||
|
||||
requirements: |
||||
|
||||
- docker |
||||
- docker-compose |
||||
|
||||
run: |
||||
|
||||
- first `./host/_traefik` |
||||
- then all services in `./host/*` |
||||
|
||||
there is `./host/crontab` ran as root to clean logs and run cron job for nextcloud until i make it a container thingy |
||||
|
||||
## machine b (proxy) |
||||
|
||||
see `./proxy/init.sh` for an idea of how to setup the proxy |
||||
|
||||
custom caddy build with |
||||
|
||||
- layer4 |
||||
- gandi dns |
||||
|
||||
easiest way is to go to https://caddyserver.com/download you can download custom builds |
||||
|
||||
the configuration i use is in `./proxy/Caddyfile.json` |
||||
|
||||
see https://github.com/libdns/gandi for how to generate creds and set `GANDI_API_KEY` environment var so that the service can access it (if running with systemd `systemctl edit caddy` and google how to add overrides to a system service) |
||||
|
||||
i use systemd and had to edit the caddy.service file because by default it uses Caddyfile |
||||
|
||||
there is no "json" adapter (don't try, wasted many time on that), instead you simply need to make sure the config file ends with `.json` and it should work (yeah because caddy devs really like to think filename suffixes make the format, cant just put json in Caddyfile directly) /rant |
||||
|
||||
## TODO |
||||
|
||||
- [ ] proper fix comfy center (wildcards without tls ???) |
@ -0,0 +1,8 @@ |
||||
--- |
||||
include: |
||||
- project: "kay/ci-templates" |
||||
file: |
||||
- "/Semantic-Release.gitlab-ci.yml" |
||||
|
||||
stages: |
||||
- review |
@ -0,0 +1,27 @@ |
||||
# [1.3.0](https://code.eutychia.org/kay/eutychia-org-services/compare/v1.2.0...v1.3.0) (2022-06-28) |
||||
|
||||
|
||||
### Features |
||||
|
||||
* Start migrating to k8s ([f1fbac2](https://code.eutychia.org/kay/eutychia-org-services/commit/f1fbac2016b75d7d9826b10dcb58ca3ac56aef74)) |
||||
|
||||
# [1.2.0](https://code.eutychia.org/kay/eutychia-org-services/compare/v1.1.0...v1.2.0) (2022-06-27) |
||||
|
||||
|
||||
### Features |
||||
|
||||
* Switch to 'official' matrix puppet images ([94ff64b](https://code.eutychia.org/kay/eutychia-org-services/commit/94ff64b873dc953b7fc139a2a714fd94ca7832f8)) |
||||
|
||||
# [1.1.0](https://code.eutychia.org/kay/eutychia-org-services/compare/v1.0.0...v1.1.0) (2022-06-26) |
||||
|
||||
|
||||
### Features |
||||
|
||||
* Update readme ([da9f178](https://code.eutychia.org/kay/eutychia-org-services/commit/da9f17839a26db34e9f03bd864679c484e20bda7)) |
||||
|
||||
# 1.0.0 (2022-06-26) |
||||
|
||||
|
||||
### Features |
||||
|
||||
* Add semantic release ([fc1fc36](https://code.eutychia.org/kay/eutychia-org-services/commit/fc1fc362dcb10917895abe53a424900fdf076e52)) |
@ -0,0 +1,459 @@ |
||||
Attribution-NonCommercial-ShareAlike 4.0 International AntiFascistEdit |
||||
|
||||
======================================================================= |
||||
|
||||
Creative Commons Corporation ("Creative Commons") is not a law firm and |
||||
does not provide legal services or legal advice. Distribution of |
||||
Creative Commons public licenses does not create a lawyer-client or |
||||
other relationship. Creative Commons makes its licenses and related |
||||
information available on an "as-is" basis. Creative Commons gives no |
||||
warranties regarding its licenses, any material licensed under their |
||||
terms and conditions, or any related information. Creative Commons |
||||
disclaims all liability for damages resulting from their use to the |
||||
fullest extent possible. |
||||
|
||||
Using Creative Commons Public Licenses |
||||
|
||||
Creative Commons public licenses provide a standard set of terms and |
||||
conditions that creators and other rights holders may use to share |
||||
original works of authorship and other material subject to copyright |
||||
and certain other rights specified in the public license below. The |
||||
following considerations are for informational purposes only, are not |
||||
exhaustive, and do not form part of our licenses. |
||||
|
||||
Considerations for licensors: Our public licenses are |
||||
intended for use by those authorized to give the public |
||||
permission to use material in ways otherwise restricted by |
||||
copyright and certain other rights. Our licenses are |
||||
irrevocable. Licensors should read and understand the terms |
||||
and conditions of the license they choose before applying it. |
||||
Licensors should also secure all rights necessary before |
||||
applying our licenses so that the public can reuse the |
||||
material as expected. Licensors should clearly mark any |
||||
material not subject to the license. This includes other CC- |
||||
licensed material, or material used under an exception or |
||||
limitation to copyright. More considerations for licensors: |
||||
wiki.creativecommons.org/Considerations_for_licensors |
||||
|
||||
Considerations for the public: By using one of our public |
||||
licenses, a licensor grants the public permission to use the |
||||
licensed material under specified terms and conditions. If |
||||
the licensor's permission is not necessary for any reason--for |
||||
example, because of any applicable exception or limitation to |
||||
copyright--then that use is not regulated by the license. Our |
||||
licenses grant only permissions under copyright and certain |
||||
other rights that a licensor has authority to grant. Use of |
||||
the licensed material may still be restricted for other |
||||
reasons, including because others have copyright or other |
||||
rights in the material. A licensor may make special requests, |
||||
such as asking that all changes be marked or described. |
||||
Although not required by our licenses, you are encouraged to |
||||
respect those requests where reasonable. More considerations |
||||
for the public: |
||||
wiki.creativecommons.org/Considerations_for_licensees |
||||
|
||||
======================================================================= |
||||
|
||||
Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International |
||||
Public License |
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree |
||||
to be bound by the terms and conditions of this Creative Commons |
||||
Attribution-NonCommercial-ShareAlike 4.0 International Public License |
||||
("Public License"). To the extent this Public License may be |
||||
interpreted as a contract, You are granted the Licensed Rights in |
||||
consideration of Your acceptance of these terms and conditions, and the |
||||
Licensor grants You such rights in consideration of benefits the |
||||
Licensor receives from making the Licensed Material available under |
||||
these terms and conditions. |
||||
|
||||
|
||||
Section 1 -- Definitions. |
||||
|
||||
a. Adapted Material means material subject to Copyright and Similar |
||||
Rights that is derived from or based upon the Licensed Material |
||||
and in which the Licensed Material is translated, altered, |
||||
arranged, transformed, or otherwise modified in a manner requiring |
||||
permission under the Copyright and Similar Rights held by the |
||||
Licensor. For purposes of this Public License, where the Licensed |
||||
Material is a musical work, performance, or sound recording, |
||||
Adapted Material is always produced where the Licensed Material is |
||||
synched in timed relation with a moving image. |
||||
|
||||
b. Adapter's License means the license You apply to Your Copyright |
||||
and Similar Rights in Your contributions to Adapted Material in |
||||
accordance with the terms and conditions of this Public License. |
||||
|
||||
c. BY-NC-SA Compatible License means a license listed at |
||||
creativecommons.org/compatiblelicenses, approved by Creative |
||||
Commons as essentially the equivalent of this Public License. |
||||
|
||||
d. Copyright and Similar Rights means copyright and/or similar rights |
||||
closely related to copyright including, without limitation, |
||||
performance, broadcast, sound recording, and Sui Generis Database |
||||
Rights, without regard to how the rights are labeled or |
||||
categorized. For purposes of this Public License, the rights |
||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar |
||||
Rights. |
||||
|
||||
e. Effective Technological Measures means those measures that, in the |
||||
absence of proper authority, may not be circumvented under laws |
||||
fulfilling obligations under Article 11 of the WIPO Copyright |
||||
Treaty adopted on December 20, 1996, and/or similar international |
||||
agreements. |
||||
|
||||
f. Exceptions and Limitations means fair use, fair dealing, and/or |
||||
any other exception or limitation to Copyright and Similar Rights |
||||
that applies to Your use of the Licensed Material. |
||||
|
||||
g. License Elements means the license attributes listed in the name |
||||
of a Creative Commons Public License. The License Elements of this |
||||
Public License are Attribution, NonCommercial, and ShareAlike. |
||||
|
||||
h. Licensed Material means the artistic or literary work, database, |
||||
or other material to which the Licensor applied this Public |
||||
License. |
||||
|
||||
i. Licensed Rights means the rights granted to You subject to the |
||||
terms and conditions of this Public License, which are limited to |
||||
all Copyright and Similar Rights that apply to Your use of the |
||||
Licensed Material and that the Licensor has authority to license. |
||||
|
||||
j. Licensor means the individual(s) or entity(ies) granting rights |
||||
under this Public License. |
||||
|
||||
k. NonCommercial means not primarily intended for or directed towards |
||||
commercial advantage or monetary compensation. For purposes of |
||||
this Public License, the exchange of the Licensed Material for |
||||
other material subject to Copyright and Similar Rights by digital |
||||
file-sharing or similar means is NonCommercial provided there is |
||||
no payment of monetary compensation in connection with the |
||||
exchange. |
||||
|
||||
l. Share means to provide material to the public by any means or |
||||
process that requires permission under the Licensed Rights, such |
||||
as reproduction, public display, public performance, distribution, |
||||
dissemination, communication, or importation, and to make material |
||||
available to the public including in ways that members of the |
||||
public may access the material from a place and at a time |
||||
individually chosen by them. |
||||
|
||||
m. Sui Generis Database Rights means rights other than copyright |
||||
resulting from Directive 96/9/EC of the European Parliament and of |
||||
the Council of 11 March 1996 on the legal protection of databases, |
||||
as amended and/or succeeded, as well as other essentially |
||||
equivalent rights anywhere in the world. |
||||
|
||||
n. You means the individual or entity exercising the Licensed Rights |
||||
under this Public License. Your has a corresponding meaning. |
||||
|
||||
|
||||
Section 2 -- Scope. |
||||
|
||||
a. License grant. |
||||
|
||||
1. Subject to the terms and conditions of this Public License, |
||||
the Licensor hereby grants You a worldwide, royalty-free, |
||||
non-sublicensable, non-exclusive, irrevocable license to |
||||
exercise the Licensed Rights in the Licensed Material to: |
||||
|
||||
a. reproduce and Share the Licensed Material, in whole or |
||||
in part, for NonCommercial purposes only; and |
||||
|
||||
b. produce, reproduce, and Share Adapted Material for |
||||
NonCommercial purposes only. |
||||
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where |
||||
Exceptions and Limitations apply to Your use, this Public |
||||
License does not apply, and You do not need to comply with |
||||
its terms and conditions. |
||||
|
||||
3. Term. The term of this Public License is specified in Section |
||||
6(a). |
||||
|
||||
4. Media and formats; technical modifications allowed. The |
||||
Licensor authorizes You to exercise the Licensed Rights in |
||||
all media and formats whether now known or hereafter created, |
||||
and to make technical modifications necessary to do so. The |
||||
Licensor waives and/or agrees not to assert any right or |
||||
authority to forbid You from making technical modifications |
||||
necessary to exercise the Licensed Rights, including |
||||
technical modifications necessary to circumvent Effective |
||||
Technological Measures. For purposes of this Public License, |
||||
simply making modifications authorized by this Section 2(a) |
||||
(4) never produces Adapted Material. |
||||
|
||||
5. Downstream recipients. |
||||
|
||||
a. Offer from the Licensor -- Licensed Material. Every |
||||
recipient of the Licensed Material automatically |
||||
receives an offer from the Licensor to exercise the |
||||
Licensed Rights under the terms and conditions of this |
||||
Public License. |
||||
|
||||
b. Additional offer from the Licensor -- Adapted Material. |
||||
Every recipient of Adapted Material from You |
||||
automatically receives an offer from the Licensor to |
||||
exercise the Licensed Rights in the Adapted Material |
||||
under the conditions of the Adapter's License You apply. |
||||
|
||||
c. No downstream restrictions. You may not offer or impose |
||||
any additional or different terms or conditions on, or |
||||
apply any Effective Technological Measures to, the |
||||
Licensed Material if doing so restricts exercise of the |
||||
Licensed Rights by any recipient of the Licensed |
||||
Material. |
||||
|
||||
6. No endorsement. Nothing in this Public License constitutes or |
||||
may be construed as permission to assert or imply that You |
||||
are, or that Your use of the Licensed Material is, connected |
||||
with, or sponsored, endorsed, or granted official status by, |
||||
the Licensor or others designated to receive attribution as |
||||
provided in Section 3(a)(1)(A)(i). |
||||
|
||||
b. Other rights. |
||||
|
||||
1. Moral rights, such as the right of integrity, are not |
||||
licensed under this Public License, nor are publicity, |
||||
privacy, and/or other similar personality rights; however, to |
||||
the extent possible, the Licensor waives and/or agrees not to |
||||
assert any such rights held by the Licensor to the limited |
||||
extent necessary to allow You to exercise the Licensed |
||||
Rights, but not otherwise. |
||||
|
||||
2. Patent and trademark rights are not licensed under this |
||||
Public License. |
||||
|
||||
3. To the extent possible, the Licensor waives any right to |
||||
collect royalties from You for the exercise of the Licensed |
||||
Rights, whether directly or through a collecting society |
||||
under any voluntary or waivable statutory or compulsory |
||||
licensing scheme. In all other cases the Licensor expressly |
||||
reserves any right to collect such royalties, including when |
||||
the Licensed Material is used other than for NonCommercial |
||||
purposes. |
||||
|
||||
|
||||
Section 3 -- License Conditions. |
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the |
||||
following conditions. |
||||
|
||||
a. Attribution. |
||||
|
||||
1. If You Share the Licensed Material (including in modified |
||||
form), You must: |
||||
|
||||
a. retain the following if it is supplied by the Licensor |
||||
with the Licensed Material: |
||||
|
||||
i. identification of the creator(s) of the Licensed |
||||
Material and any others designated to receive |
||||
attribution, in any reasonable manner requested by |
||||
the Licensor (including by pseudonym if |
||||
designated); |
||||
|
||||
ii. a copyright notice; |
||||
|
||||
iii. a notice that refers to this Public License; |
||||
|
||||
iv. a notice that refers to the disclaimer of |
||||
warranties; |
||||
|
||||
v. a URI or hyperlink to the Licensed Material to the |
||||
extent reasonably practicable; |
||||
|
||||
b. indicate if You modified the Licensed Material and |
||||
retain an indication of any previous modifications; and |
||||
|
||||
c. indicate the Licensed Material is licensed under this |
||||
Public License, and include the text of, or the URI or |
||||
hyperlink to, this Public License. |
||||
|
||||
2. You may satisfy the conditions in Section 3(a)(1) in any |
||||
reasonable manner based on the medium, means, and context in |
||||
which You Share the Licensed Material. For example, it may be |
||||
reasonable to satisfy the conditions by providing a URI or |
||||
hyperlink to a resource that includes the required |
||||
information. |
||||
3. If requested by the Licensor, You must remove any of the |
||||
information required by Section 3(a)(1)(A) to the extent |
||||
reasonably practicable. |
||||
|
||||
b. ShareAlike. |
||||
|
||||
In addition to the conditions in Section 3(a), if You Share |
||||
Adapted Material You produce, the following conditions also apply. |
||||
|
||||
1. The Adapter's License You apply must be a Creative Commons |
||||
license with the same License Elements, this version or |
||||
later, or a BY-NC-SA Compatible License. |
||||
|
||||
2. You must include the text of, or the URI or hyperlink to, the |
||||
Adapter's License You apply. You may satisfy this condition |
||||
in any reasonable manner based on the medium, means, and |
||||
context in which You Share Adapted Material. |
||||
|
||||
3. You may not offer or impose any additional or different terms |
||||
or conditions on, or apply any Effective Technological |
||||
Measures to, Adapted Material that restrict exercise of the |
||||
rights granted under the Adapter's License You apply. |
||||
|
||||
|
||||
Section 4 -- Sui Generis Database Rights. |
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that |
||||
apply to Your use of the Licensed Material: |
||||
|
||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right |
||||
to extract, reuse, reproduce, and Share all or a substantial |
||||
portion of the contents of the database for NonCommercial purposes |
||||
only; |
||||
|
||||
b. if You include all or a substantial portion of the database |
||||
contents in a database in which You have Sui Generis Database |
||||
Rights, then the database in which You have Sui Generis Database |
||||
Rights (but not its individual contents) is Adapted Material, |
||||
including for purposes of Section 3(b); and |
||||
|
||||
c. You must comply with the conditions in Section 3(a) if You Share |
||||
all or a substantial portion of the contents of the database. |
||||
|
||||
For the avoidance of doubt, this Section 4 supplements and does not |
||||
replace Your obligations under this Public License where the Licensed |
||||
Rights include other Copyright and Similar Rights. |
||||
|
||||
|
||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability. |
||||
|
||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE |
||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS |
||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF |
||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, |
||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, |
||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR |
||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, |
||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT |
||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT |
||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. |
||||
|
||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE |
||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, |
||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, |
||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, |
||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR |
||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN |
||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR |
||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR |
||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. |
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided |
||||
above shall be interpreted in a manner that, to the extent |
||||
possible, most closely approximates an absolute disclaimer and |
||||
waiver of all liability. |
||||
|
||||
|
||||
Section 6 -- Term and Termination. |
||||
|
||||
a. This Public License applies for the term of the Copyright and |
||||
Similar Rights licensed here. However, if You fail to comply with |
||||
this Public License, then Your rights under this Public License |
||||
terminate automatically. |
||||
|
||||
b. Where Your right to use the Licensed Material has terminated under |
||||
Section 6(a), it reinstates: |
||||
|
||||
1. automatically as of the date the violation is cured, provided |
||||
it is cured within 30 days of Your discovery of the |
||||
violation; or |
||||
|
||||
2. upon express reinstatement by the Licensor. |
||||
|
||||
For the avoidance of doubt, this Section 6(b) does not affect any |
||||
right the Licensor may have to seek remedies for Your violations |
||||
of this Public License. |
||||
|
||||
c. For the avoidance of doubt, the Licensor may also offer the |
||||
Licensed Material under separate terms or conditions or stop |
||||
distributing the Licensed Material at any time; however, doing so |
||||
will not terminate this Public License. |
||||
|
||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public |
||||
License. |
||||
|
||||
|
||||
Section 7 -- Other Terms and Conditions. |
||||
|
||||
a. The Licensor shall not be bound by any additional or different |
||||
terms or conditions communicated by You unless expressly agreed. |
||||
|
||||
b. Any arrangements, understandings, or agreements regarding the |
||||
Licensed Material not stated herein are separate from and |
||||
independent of the terms and conditions of this Public License. |
||||
|
||||
c. The License does not apply and no license is granted for |
||||
taking action on behalf of a Nation or State or Government, |
||||
be it military, law enforcement, agent, spy, hacker, developer, |
||||
this list is not exhaustive. |
||||
|
||||
d. The License does not apply and no license is granted to actors |
||||
taking action to oppress, harm, injure, kill, whether |
||||
physically or psycholocially. |
||||
|
||||
e. The License does not apply and no license is granted to actors |
||||
acting on behalf of any party previously found guilty of committing |
||||
war crimes at any point in time. |
||||
|
||||
f. The License does not apply and no license is granted to actors |
||||
acting on behalf of any party previously found not respecting the |
||||
Universal Declaration of Human Rights at any point in time. |
||||
|
||||
g. The License does not apply and no license is granted to actors |
||||
acting with the intent of surveilling a population or the intent of |
||||
gathering information on spefific or non-specific populations and/or |
||||
target demographics. |
||||
|
||||
|
||||
Section 8 -- Interpretation. |
||||
|
||||
a. For the avoidance of doubt, this Public License does not, and |
||||
shall not be interpreted to, reduce, limit, restrict, or impose |
||||
conditions on any use of the Licensed Material that could lawfully |
||||
be made without permission under this Public License. |
||||
|
||||
b. To the extent possible, if any provision of this Public License is |
||||
deemed unenforceable, it shall be automatically reformed to the |
||||
minimum extent necessary to make it enforceable. If the provision |
||||
cannot be reformed, it shall be severed from this Public License |
||||
without affecting the enforceability of the remaining terms and |
||||
conditions. |
||||
|
||||
c. No term or condition of this Public License will be waived and no |
||||
failure to comply consented to unless expressly agreed to by the |
||||
Licensor. |
||||
|
||||
d. Nothing in this Public License constitutes or may be interpreted |
||||
as a limitation upon, or waiver of, any privileges and immunities |
||||
that apply to the Licensor or You, including from the legal |
||||
processes of any jurisdiction or authority. |
||||
|
||||
======================================================================= |
||||
|
||||
Creative Commons is not a party to its public |
||||
licenses. Notwithstanding, Creative Commons may elect to apply one of |
||||
its public licenses to material it publishes and in those instances |
||||
will be considered the โLicensor.โ The text of the Creative Commons |
||||
public licenses is dedicated to the public domain under the CC0 Public |
||||
Domain Dedication. Except for the limited purpose of indicating that |
||||
material is shared under a Creative Commons public license or as |
||||
otherwise permitted by the Creative Commons policies published at |
||||
creativecommons.org/policies, Creative Commons does not authorize the |
||||
use of the trademark "Creative Commons" or any other trademark or logo |
||||
of Creative Commons without its prior written consent including, |
||||
without limitation, in connection with any unauthorized modifications |
||||
to any of its public licenses or any other arrangements, |
||||
understandings, or agreements concerning use of licensed material. For |
||||
the avoidance of doubt, this paragraph does not form part of the |
||||
public licenses. |
||||
|
||||
Creative Commons may be contacted at creativecommons.org. |
@ -0,0 +1,104 @@ |
||||
# [eutychia-org-services](https://code.juke.fr/kay/eutychia-org-services) |
||||
docker-compose service files and caddy reverse proxy config for eutychia.org |
||||
|
||||
## features |
||||
|
||||
- machine A (home computer) |
||||
- runs all services via docker-compose |
||||
- all services load-balanced by traefik |
||||
- is wireguard host |
||||
- machine B (cheap vps) |
||||
- is wireguard client |
||||
- reverse-proxies all traffic with Caddy2 |
||||
|
||||
## machine a (host) |
||||
|
||||
requirements: |
||||
|
||||
- docker |
||||
- docker-compose |
||||
|
||||
run: |
||||
|
||||
- first `./host/_traefik` |
||||
- then all services in `./host/*` |
||||
|
||||
there is `./host/crontab` ran as root to clean logs and run cron job for nextcloud until i make it a container thingy |
||||
|
||||
## machine b (proxy) |
||||
|
||||
see `./proxy/init.sh` for an idea of how to setup the proxy |
||||
|
||||
custom caddy build with |
||||
|
||||
- layer4 |
||||
- gandi dns |
||||
|
||||
easiest way is to go to https://caddyserver.com/download you can download custom builds |
||||
|
||||
the configuration i use is in `./proxy/Caddyfile.json` |
||||
|
||||
see https://github.com/libdns/gandi for how to generate creds and set `GANDI_API_KEY` environment var so that the service can access it (if running with systemd `systemctl edit caddy` and google how to add overrides to a system service) |
||||
|
||||
i use systemd and had to edit the caddy.service file because by default it uses Caddyfile |
||||
|
||||
there is no "json" adapter (don't try, wasted many time on that), instead you simply need to make sure the config file ends with `.json` and it should work (yeah because caddy devs really like to think filename suffixes make the format, cant just put json in Caddyfile directly) /rant |
||||
|
||||
## TODO |
||||
|
||||
- [ ] proper fix comfy center (wildcards without tls ???) |
||||
|
||||
|
||||
## License |
||||
|
||||
Most all of my work is now licensed under **a modified** [CC-BY-NC-SA 4.0 AFEdit](https://code.juke.fr/kay/license/raw/branch/main/LICENSE) plus accounting for states existing in our world on top of capitalism. |
||||
|
||||
This is a weird choice for code right? |
||||
|
||||
Here are a few key reasons: |
||||
- my definition of "open" involves being able to share and modify, you are able to do such things, just not make money off of it, or oppress people |
||||
- my definition of "free" involves being able to share and modify, you are able to do such things, not just make money off of it, or oppressing people |
||||
|
||||
So no, amongst other things, this list is not exhaustive, |
||||
- you cannot have somebody work on my tool and redistribute it to your employees |
||||
- you cannot resell copies of this because in this age distribution is not done with floppy disks and the internet is a thing |
||||
- you cannot use it to generate revenue yourself |
||||
- you cannot use it to "generate value" in a capitalistic sense |
||||
- you cannot use it in any military capacity |
||||
- you cannot use it in any law enforcement capacity |
||||
- you cannot use it in any state backed capacity |
||||
- you cannot use it in any surveillance capacity |
||||
- you cannot use it if you represent the interests of a state |
||||
- you cannot use it to oppress, spy, control in any capacity |
||||
- you cannot use it to injure, harm, kill, whether physically or psychologically |
||||
|
||||
You can, however, |
||||
- change it to do whatever you please |
||||
- share it to anyone you please with attribution and under the same license |
||||
- use it as much as you please |
||||
- and probably a bunch of other cool things that are possible outside of a capitalistic, imperialistic frame of reference that permeates the tech scene |
||||
|
||||
Most of the "arguments" for how "free" and "open" source licenses are done still to this day stem from archaic concepts that might not even be relevant these days and I fail to see the issue with this license not being "interoperable" with a bunch of what I deem to be "bad" licenses, as they all allow for commercial usage. |
||||
|
||||
I also will not make any attempts to monetize these works and will at most ever offer the possibility to donate to me directly if you enjoy what I do. |
||||
|
||||
Thank you that is all. |
||||
|
||||
## Development |
||||
|
||||
To clone the repository locally: |
||||
|
||||
```bash |
||||
$ git clone https://code.juke.fr/kay/eutychia-org-services.git |
||||
``` |
||||
|
||||
## Contributing |
||||
|
||||
More to come later. |
||||
|
||||
### Issues |
||||
Open new issues by mailing [eutychia.gitlab+eutychia-org-services-issue@gmail.com](mailto:eutychia.gitlab+eutychia-org-services-issue@gmail.com) |
||||
|
||||
--- |
||||
beep boop |
||||
|
@ -0,0 +1 @@ |
||||
public |
@ -0,0 +1,5 @@ |
||||
# eutychia.org/static/ |
||||
|
||||
a simple static file server |
||||
|
||||
|
@ -0,0 +1,22 @@ |
||||
version: '3' |
||||
|
||||
services: |
||||
static: |
||||
image: registry.eutychia.org/kay/static-server/main:latest |
||||
restart: always |
||||
volumes: |
||||
- './public:/workspace/public' |
||||
networks: |
||||
- external |
||||
logging: |
||||
driver: none |
||||
environment: |
||||
- PREFIX=/static |
||||
labels: |
||||
- 'traefik.enable=true' |
||||
- 'traefik.docker.network=external' |
||||
- 'traefik.http.routers.static-eutychiaorg.entrypoints=web' |
||||
- 'traefik.http.routers.static-eutychiaorg.rule=Host(`eutychia.org`)&&PathPrefix(`/static/`)' |
||||
networks: |
||||
external: |
||||
external: true |
@ -0,0 +1,5 @@ |
||||
#DNS_EMAIL=acme@example.com |
||||
|
||||
# https://doc.traefik.io/traefik/https/acme/#providers |
||||
#DNS_PROVIDER=gandi |
||||
#GANDI_API_KEY=blabla |
@ -0,0 +1 @@ |
||||
.env |
@ -0,0 +1,100 @@ |
||||
--- |
||||
version: "3" |
||||
|
||||
services: |
||||
traefik: |
||||
image: traefik:latest |
||||
restart: always |
||||
ports: |
||||
- "80:80" # main load balancer |
||||
- "1935:1935" # peertube stream |
||||
- "8085:8085" # azerothcore world |
||||
- "3724:3724" # azerothcore login |
||||
- "25565:25565" # minecraft |
||||
- "2222:2222" # gitlab ssh |
||||
- "8080:8080" # dashboard |
||||
volumes: |
||||
- "./traefik.yml:/etc/traefik/traefik.yml" |
||||
- /var/run/docker.sock:/var/run/docker.sock |
||||
networks: |
||||
- external |
||||
env_file: |
||||
- .env |
||||
|
||||
# prometheus: |
||||
# image: prom/prometheus |
||||
# restart: always |
||||
# volumes: |
||||
# - ./prometheus/:/etc/prometheus/ |
||||
# - prometheus_data:/prometheus |
||||
# command: |
||||
# - "--config.file=/etc/prometheus/prometheus.yml" |
||||
# - "--storage.tsdb.path=/prometheus" |
||||
# - "--web.console.libraries=/usr/share/prometheus/console_libraries" |
||||
# - "--web.console.templates=/usr/share/prometheus/consoles" |
||||
# networks: |
||||
# - internal |
||||
# - external |
||||
# extra_hosts: |
||||
# - "host.docker.internal:host-gateway" |
||||
|
||||
# grafana: |
||||
# image: grafana/grafana |
||||
# restart: always |
||||
# depends_on: |
||||
# - prometheus |
||||
# volumes: |
||||
# - grafana_data:/var/lib/grafana |
||||
# - ./grafana/provisioning/:/etc/grafana/provisioning/ |
||||
# env_file: |
||||
# - ./grafana/config.monitoring |
||||
# networks: |
||||
# - internal |
||||
# - external |
||||
# ports: |
||||
# - "3000:3000" |
||||
|
||||
# cadvisor: |
||||
# image: gcr.io/cadvisor/cadvisor:latest |
||||
# restart: always |
||||
# volumes: |
||||
# - /:/rootfs:ro |
||||
# - /var/run:/var/run:rw |
||||
# - /sys:/sys:ro |
||||
# - /var/lib/docker/:/var/lib/docker:ro |
||||
# depends_on: |
||||
# - redis |
||||
# networks: |
||||
# - internal |
||||
# - external |
||||
# command: |
||||
# - "-docker_only=true" |
||||
# redis: |
||||
# image: redis:latest |
||||
# restart: always |
||||
# networks: |
||||
# - internal |
||||
# node-exporter: |
||||
# image: prom/node-exporter:latest |
||||
# restart: always |
||||
# networks: |
||||
# - internal |
||||
# - external |
||||
# volumes: |
||||
# - /proc:/host/proc:ro |
||||
# - /sys:/host/sys:ro |
||||
# - /:/rootfs:ro |
||||
# command: |
||||
# - "--path.procfs=/host/proc" |
||||
# - "--path.rootfs=/rootfs" |
||||
# - "--path.sysfs=/host/sys" |
||||
# - "--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)" |
||||
networks: |
||||
external: |
||||
external: true |
||||
internal: |
||||
internal: true |
||||
|
||||
volumes: |
||||
prometheus_data: {} |
||||
grafana_data: {} |
@ -0,0 +1,3 @@ |
||||
GF_SECURITY_ADMIN_PASSWORD=foobar |
||||
GF_USERS_ALLOW_SIGN_UP=false |
||||
GF_INSTALL_PLUGINS=grafana-piechart-panel,yesoreyeram-boomtheme-panel |
@ -0,0 +1,13 @@ |
||||
apiVersion: 1 |
||||
|
||||
providers: |
||||
- name: "default" |
||||
orgId: 1 |
||||
folder: "" |
||||
folderUid: "" |
||||
type: file |
||||
disableDeletion: false |
||||
editable: true |
||||
updateIntervalSeconds: 10 |
||||
options: |
||||
path: /etc/grafana/provisioning/dashboards |
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,28 @@ |
||||
apiVersion: 1 |
||||
deleteDatasources: |
||||
- name: Prometheus |
||||
orgId: 1 |
||||
datasources: |
||||
- name: Prometheus |
||||
type: prometheus |
||||
access: server |
||||
orgId: 1 |
||||
url: http://prometheus:9090 |
||||
password: |
||||
user: |
||||
database: |
||||
basicAuth: false |
||||
basicAuthUser: admin |
||||
basicAuthPassword: foobar |
||||
withCredentials: |
||||
isDefault: true |
||||
jsonData: |
||||
graphiteVersion: "1.1" |
||||
tlsAuth: false |
||||
tlsAuthWithCACert: false |
||||
secureJsonData: |
||||
tlsCACert: "..." |
||||
tlsClientCert: "..." |
||||
tlsClientKey: "..." |
||||
version: 1 |
||||
editable: true |
@ -0,0 +1,21 @@ |
||||
global: |
||||
scrape_interval: 5s # By default, scrape targets every 15 seconds. |
||||
evaluation_interval: 5s # By default, scrape targets every 15 seconds. |
||||
external_labels: |
||||
monitor: "traefik" |
||||
scrape_configs: |
||||
- job_name: "traefik" |
||||
static_configs: |
||||
- targets: ["traefik:8080"] |
||||
- job_name: "prometheus" |
||||
static_configs: |
||||
- targets: ["localhost:9090"] |
||||
- job_name: "docker" |
||||
static_configs: |
||||
- targets: ["host.docker.internal:9323"] |
||||
- job_name: "cadvisor" |
||||
static_configs: |
||||
- targets: ["cadvisor:8080"] |
||||
- job_name: "node-exporter" |
||||
static_configs: |
||||
- targets: ["node-exporter:9100"] |
@ -0,0 +1,58 @@ |
||||
log: |
||||
level: DEBUG |
||||
|
||||
api: |
||||
insecure: true |
||||
|
||||
serversTransport: |
||||
insecureSkipVerify: false |
||||
|
||||
providers: |
||||
docker: |
||||
exposedByDefault: false |
||||
|
||||
metrics: |
||||
prometheus: |
||||
buckets: |
||||
- 0.1 |
||||
- 0.3 |
||||
- 1.2 |
||||
- 5.0 |
||||
|
||||
entrypoints: |
||||
web: |
||||
address: ":80" |
||||
forwardedHeaders: |
||||
trustedIPs: |
||||
- "127.0.0.1/32" |
||||
- "10.8.0.2/32" |
||||
peertube_streaming: |
||||
address: ":1935" |
||||
forwardedHeaders: |
||||
trustedIPs: |
||||
- "127.0.0.1/32" |
||||
- "10.8.0.2/32" |
||||
azerothcore_world: |
||||
address: ":8085" |
||||
forwardedHeaders: |
||||
trustedIPs: |
||||
- "127.0.0.1/32" |
||||
- "10.8.0.2/32" |
||||
azerothcore_login: |
||||
address: ":3724" |
||||
forwardedHeaders: |
||||
trustedIPs: |
||||
- "127.0.0.1/32" |
||||
- "10.8.0.2/32" |
||||
minecraft: |
||||
address: ":25565" |
||||
forwardedHeaders: |
||||
trustedIPs: |
||||
- "127.0.0.1/32" |
||||
- "10.8.0.2/32" |
||||
gitlab_ssh: |
||||
address: ":2222" |
||||
forwardedHeaders: |
||||
trustedIPs: |
||||
- "127.0.0.1/32" |
||||
- "10.8.0.2/32" |
@ -0,0 +1,23 @@ |
||||
FUNKWHALE_API_PORT=5000 |
||||
#SERVICE_AUDIO_PATH_DATA=./data |
||||
|
||||
FUNKWHALE_VERSION=1.1.4 |
||||
FUNKWHALE_API_IP=api |
||||
FUNKWHALE_WEB_WORKERS=4 |
||||
FUNKWHALE_HOSTNAME=audio.eutychia.org |
||||
FUNKWHALE_PROTOCOL=https |
||||
LOGLEVEL=critical |
||||
REVERSE_PROXY_TYPE=nginx |
||||
DATABASE_URL=postgresql://postgres@postgres:5432/postgres |
||||
CACHE_URL=redis://redis:6379/0 |
||||
MEDIA_ROOT=/media |
||||
MUSIC_DIRECTORY_PATH=/music |
||||
MUSIC_DIRECTORY_SERVE_PATH=/music_serve |
||||
STATIC_ROOT=/static |
||||
DJANGO_SETTINGS_MODULE=config.settings.production |
||||
DJANGO_SECRET_KEY= |
||||
RAVEN_ENABLED=false |
||||
FUNKWHALE_FRONTEND_PATH=/front/dist |
||||
NGINX_MAX_BODY_SIZE=100M |
||||
NESTED_PROXY=1 |
||||
FUNKWHALE_QUIET=true |
@ -0,0 +1,2 @@ |
||||
.env |
||||
data |
@ -0,0 +1,18 @@ |
||||
# audio.eutychia.org - funkwhale |
||||
|
||||
## setup |
||||
```bash |
||||
$ cp .env.example .env |
||||
|
||||
$ openssl rand -base64 45 # for DJANGO_SECRET |
||||
|
||||
$ vim .env |
||||
|
||||
$ docker-compose up -d postgres |
||||
|
||||
$ docker-compose run --rm api python manage.py migrate |
||||
|
||||
$ docker-compose run --rm api python manage.py createsuperuser |
||||
|
||||
$ docker-compose up -d |
||||
``` |
@ -0,0 +1,122 @@ |
||||
version: "3" |
||||
services: |
||||
postgres: |
||||
restart: always |
||||
image: postgres:14 |
||||
environment: |
||||
- "POSTGRES_HOST_AUTH_METHOD=trust" |
||||
healthcheck: |
||||
test: ["CMD", "pg_isready", "-U", "postgres"] |
||||
volumes: |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}/postgres:/var/lib/postgresql/data" |
||||
logging: |
||||
driver: none |
||||
networks: |
||||
- internal |
||||
redis: |
||||
restart: always |
||||
networks: |
||||
- internal |
||||
env_file: .env |
||||
image: redis:5 |
||||
volumes: |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}/redis:/data" |
||||
logging: |
||||
driver: none |
||||
|
||||
celeryworker: |
||||
restart: always |
||||
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest} |
||||
networks: |
||||
- internal |
||||
- external |
||||
depends_on: |
||||
- postgres |
||||
- redis |
||||
env_file: .env |
||||
# Celery workers handle background tasks (such file imports or federation |
||||
# messaging). The more processes a worker gets, the more tasks |
||||
# can be processed in parallel. However, more processes also means |
||||
# a bigger memory footprint. |
||||
# By default, a worker will span a number of process equal to your number |
||||
# of CPUs. You can adjust this, by explicitly setting the --concurrency |
||||
# flag: |
||||
# celery -A funkwhale_api.taskapp worker -l INFO --concurrency=4 |
||||
command: celery -A funkwhale_api.taskapp worker -l CRITICAL --concurrency=${CELERYD_CONCURRENCY-0} |
||||
environment: |
||||
- C_FORCE_ROOT=true |
||||
volumes: |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${MUSIC_DIRECTORY_PATH:-/music}:${MUSIC_DIRECTORY_PATH-/music}:ro" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${MEDIA_ROOT:-/media}:${MEDIA_ROOT:-/media}" |
||||
logging: |
||||
driver: none |
||||
|
||||
celerybeat: |
||||
restart: unless-stopped |
||||
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest} |
||||
networks: |
||||
- internal |
||||
- external |
||||
depends_on: |
||||
- postgres |
||||
- redis |
||||
env_file: .env |
||||
command: celery -A funkwhale_api.taskapp beat --pidfile= -l CRITICAL |
||||
logging: |
||||
driver: none |
||||
|
||||
api: |
||||
restart: unless-stopped |
||||
image: funkwhale/funkwhale:${FUNKWHALE_VERSION:-latest} |
||||
networks: |
||||
- internal |
||||
- external |
||||
depends_on: |
||||
- postgres |
||||
- redis |
||||
env_file: .env |
||||
volumes: |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${MUSIC_DIRECTORY_SERVE_PATH-/music_serve}:${MUSIC_DIRECTORY_PATH-/music}:ro" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${MEDIA_ROOT}:${MEDIA_ROOT}" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${STATIC_ROOT}:${STATIC_ROOT}" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${FUNKWHALE_FRONTEND_PATH}:/frontend" |
||||
logging: |
||||
driver: none |
||||
nginx: |
||||
restart: unless-stopped |
||||
image: nginx |
||||
networks: |
||||
- internal |
||||
- external |
||||
depends_on: |
||||
- api |
||||
env_file: |
||||
- .env |
||||
environment: |
||||
# Override those variables in your .env file if needed |
||||
- "NGINX_MAX_BODY_SIZE=${NGINX_MAX_BODY_SIZE-1000M}" |
||||
volumes: |
||||
- "./nginx/funkwhale.template:/etc/nginx/conf.d/funkwhale.template:ro" |
||||
- "./nginx/funkwhale_proxy.conf:/etc/nginx/funkwhale_proxy.conf:ro" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${MUSIC_DIRECTORY_SERVE_PATH-/srv/funkwhale/data/music}:${MUSIC_DIRECTORY_PATH-/music}:ro" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${MEDIA_ROOT}:${MEDIA_ROOT}:ro" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${STATIC_ROOT}:${STATIC_ROOT}:ro" |
||||
- "${SERVICE_AUDIO_PATH_DATA:-./data}${FUNKWHALE_FRONTEND_PATH}:/frontend:ro" |
||||
command: > |
||||
sh -c "envsubst \"`env | awk -F = '{printf \" $$%s\", $$1}'`\" |
||||
< /etc/nginx/conf.d/funkwhale.template |
||||
> /etc/nginx/conf.d/default.conf |
||||
&& cat /etc/nginx/conf.d/default.conf |
||||
&& nginx -g 'daemon off;'" |
||||
logging: |
||||
driver: none |
||||
labels: |
||||
- "traefik.enable=true" |
||||
- "traefik.docker.network=external" |
||||
- "traefik.http.routers.nginx-audioeutychiaorg.entrypoints=web" |
||||
- "traefik.http.routers.nginx-audioeutychiaorg.rule=Host(`audio.eutychia.org`)" |
||||
networks: |
||||
external: |
||||
external: true |
||||
internal: |
||||
internal: true |
@ -0,0 +1,115 @@ |
||||
upstream funkwhale-api { |
||||
# depending on your setup, you may want to update this |
||||
server api:5000; |
||||
} |
||||
|
||||
|
||||
# required for websocket support |
||||
map $http_upgrade $connection_upgrade { |
||||
default upgrade; |
||||
'' close; |
||||
} |
||||
|
||||
server { |
||||
access_log /dev/null; |
||||
error_log /dev/null; |
||||
|
||||
listen 80; |
||||
server_name ${FUNKWHALE_HOSTNAME}; |
||||
|
||||
# TLS |
||||
# Feel free to use your own configuration for SSL here or simply remove the |
||||
# lines and move the configuration to the previous server block if you |
||||
# don't want to run funkwhale behind https (this is not recommended) |
||||
# have a look here for let's encrypt configuration: |
||||
# https://certbot.eff.org/all-instructions/#debian-9-stretch-nginx |
||||
|
||||
root /frontend; |
||||
|
||||
# If you are using S3 to host your files, remember to add your S3 URL to the |
||||
# media-src and img-src headers (e.g. img-src 'self' https://<your-S3-URL> data:) |
||||
|
||||
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; |
||||
add_header Referrer-Policy "strict-origin-when-cross-origin"; |
||||
|
||||
|
||||
location / { |
||||
include /etc/nginx/funkwhale_proxy.conf; |
||||
# this is needed if you have file import via upload enabled |
||||
client_max_body_size ${NGINX_MAX_BODY_SIZE}; |
||||
proxy_pass http://funkwhale-api/; |
||||
} |
||||
|
||||
location /front/ { |
||||
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; |
||||
add_header Referrer-Policy "strict-origin-when-cross-origin"; |
||||
add_header Service-Worker-Allowed "/"; |
||||
add_header X-Frame-Options "ALLOW"; |
||||
alias /frontend/; |
||||
expires 30d; |
||||
add_header Pragma public; |
||||
add_header Cache-Control "public, must-revalidate, proxy-revalidate"; |
||||
} |
||||
|
||||
location /front/embed.html { |
||||
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline'; img-src 'self' data:; font-src 'self' data:; object-src 'none'; media-src 'self' data:"; |
||||
add_header Referrer-Policy "strict-origin-when-cross-origin"; |
||||
|
||||
add_header X-Frame-Options "ALLOW"; |
||||
alias /frontend/embed.html; |
||||
expires 30d; |
||||
add_header Pragma public; |
||||
add_header Cache-Control "public, must-revalidate, proxy-revalidate"; |
||||
} |
||||
|
||||
location /federation/ { |
||||
include /etc/nginx/funkwhale_proxy.conf; |
||||
proxy_pass http://funkwhale-api/federation/; |
||||
} |
||||
|
||||
# You can comment this if you do not plan to use the Subsonic API |
||||
location /rest/ { |
||||
include /etc/nginx/funkwhale_proxy.conf; |
||||
proxy_pass http://funkwhale-api/api/subsonic/rest/; |
||||
} |
||||
|
||||
location /.well-known/ { |
||||
include /etc/nginx/funkwhale_proxy.conf; |
||||
proxy_pass http://funkwhale-api/.well-known/; |
||||
} |
||||
|
||||
location /media/ { |
||||
alias ${MEDIA_ROOT}/; |
||||
} |
||||
|
||||
# this is an internal location that is used to serve |
||||
# audio files once correct permission / authentication |
||||
# has been checked on API side |
||||
location /_protected/media { |
||||
internal; |
||||
alias ${MEDIA_ROOT}; |
||||
|
||||
} |
||||
# Comment the previous location and uncomment this one if you're storing |
||||
# media files in a S3 bucket |
||||
# location ~ /_protected/media/(.+) { |
||||
# internal; |
||||
# # Needed to ensure DSub auth isn't forwarded to S3/Minio, see #932 |
||||
# proxy_set_header Authorization ""; |
||||
# proxy_pass $1; |
||||
# } |
||||
|
||||
location /_protected/music { |
||||
# this is an internal location that is used to serve |
||||
# audio files once correct permission / authentication |
||||
# has been checked on API side |
||||
# Set this to the same value as your MUSIC_DIRECTORY_PATH setting |
||||
internal; |
||||
alias ${MUSIC_DIRECTORY_PATH}; |
||||
} |
||||
|
||||
location /staticfiles/ { |
||||
# django static files |
||||
alias ${STATIC_ROOT}/; |
||||
} |
||||
} |
@ -0,0 +1,19 @@ |
||||
# use this one if you put the nginx container behind another proxy |
||||
# you will have to set some headers on this proxy as well to ensure |
||||
# everything works correctly, you can use the ones from the funkwhale_proxy.conf file |
||||
# at https://dev.funkwhale.audio/funkwhale/funkwhale/blob/develop/deploy/funkwhale_proxy.conf |
||||
# your proxy will also need to support websockets |
||||
|
||||
proxy_set_header Host $host; |
||||
proxy_set_header X-Real-IP $remote_addr; |
||||
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; |
||||
proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; |
||||
proxy_set_header X-Forwarded-Host $http_x_forwarded_host; |
||||
proxy_set_header X-Forwarded-Port $http_x_forwarded_port; |
||||
proxy_redirect off; |
||||
|
||||
# websocket support |
||||
proxy_http_version 1.1; |
||||
proxy_set_header Upgrade $http_upgrade; |
||||
proxy_set_header Connection $connection_upgrade; |
@ -0,0 +1,15 @@ |
||||
/docker-compose.override.yml |
||||
/scripts/* |
||||
!/scripts/*/ |
||||
/scripts/*/* |
||||
!/scripts/*/.gitkeep |
||||
!/scripts/typescript/tsconfig.json |
||||
!/scripts/typescript/package.json |
||||
/var/* |
||||
!/var/.gitkeep |
||||
|
||||
/.env |
||||
|
||||
!.gitkeep |
||||
|
||||
npm_modules |
@ -0,0 +1,661 @@ |
||||
GNU AFFERO GENERAL PUBLIC LICENSE |
||||
Version 3, 19 November 2007 |
||||
|
||||
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> |
||||
Everyone is permitted to copy and distribute verbatim copies |
||||
of this license document, but changing it is not allowed. |
||||
|
||||
Preamble |
||||
|
||||
The GNU Affero General Public License is a free, copyleft license for |
||||
software and other kinds of works, specifically designed to ensure |
||||
cooperation with the community in the case of network server software. |
||||
|
||||
The licenses for most software and other practical works are designed |
||||
to take away your freedom to share and change the works. By contrast, |
||||
our General Public Licenses are intended to guarantee your freedom to |
||||
share and change all versions of a program--to make sure it remains free |
||||
software for all its users. |
||||
|
||||
When we speak of free software, we are referring to freedom, not |
||||
price. Our General Public Licenses are designed to make sure that you |
||||
have the freedom to distribute copies of free software (and charge for |
||||
them if you wish), that you receive source code or can get it if you |
||||
want it, that you can change the software or use pieces of it in new |
||||
free programs, and that you know you can do these things. |
||||
|
||||
Developers that use our General Public Licenses protect your rights |
||||
with two steps: (1) assert copyright on the software, and (2) offer |
||||
you this License which gives you legal permission to copy, distribute |
||||
and/or modify the software. |
||||
|
||||
A secondary benefit of defending all users' freedom is that |
||||
improvements made in alternate versions of the program, if they |
||||
receive widespread use, become available for other developers to |
||||
incorporate. Many developers of free software are heartened and |
||||
encouraged by the resulting cooperation. However, in the case of |
||||
software used on network servers, this result may fail to come about. |
||||
The GNU General Public License permits making a modified version and |
||||
letting the public access it on a server without ever releasing its |
||||
source code to the public. |
||||
|
||||
The GNU Affero General Public License is designed specifically to |
||||
ensure that, in such cases, the modified source code becomes available |
||||
to the community. It requires the operator of a network server to |
||||
provide the source code of the modified version running there to the |
||||
users of that server. Therefore, public use of a modified version, on |
||||
a publicly accessible server, gives the public access to the source |
||||
code of the modified version. |
||||
|
||||
An older license, called the Affero General Public License and |
||||
published by Affero, was designed to accomplish similar goals. This is |
||||
a different license, not a version of the Affero GPL, but Affero has |
||||
released a new version of the Affero GPL which permits relicensing under |
||||
this license. |
||||
|
||||
The precise terms and conditions for copying, distribution and |
||||
modification follow. |
||||
|
||||
TERMS AND CONDITIONS |
||||
|
||||
0. Definitions. |
||||
|
||||
"This License" refers to version 3 of the GNU Affero General Public License. |
||||
|
||||
"Copyright" also means copyright-like laws that apply to other kinds of |
||||
works, such as semiconductor masks. |
||||
|
||||
"The Program" refers to any copyrightable work licensed under this |
||||
License. Each licensee is addressed as "you". "Licensees" and |
||||
"recipients" may be individuals or organizations. |
||||
|
||||
To "modify" a work means to copy from or adapt all or part of the work |
||||
in a fashion requiring copyright permission, other than the making of an |
||||
exact copy. The resulting work is called a "modified version" of the |
||||
earlier work or a work "based on" the earlier work. |
||||
|
||||
A "covered work" means either the unmodified Program or a work based |
||||
on the Program. |
||||
|
||||
To "propagate" a work means to do anything with it that, without |
||||
permission, would make you directly or secondarily liable for |
||||
infringement under applicable copyright law, except executing it on a |
||||
computer or modifying a private copy. Propagation includes copying, |
||||
distribution (with or without modification), making available to the |
||||
public, and in some countries other activities as well. |
||||
|
||||
To "convey" a work means any kind of propagation that enables other |
||||
parties to make or receive copies. Mere interaction with a user through |
||||
a computer network, with no transfer of a copy, is not conveying. |
||||
|
||||
An interactive user interface displays "Appropriate Legal Notices" |
||||
to the extent that it includes a convenient and prominently visible |
||||
feature that (1) displays an appropriate copyright notice, and (2) |
||||
tells the user that there is no warranty for the work (except to the |
||||
extent that warranties are provided), that licensees may convey the |
||||
work under this License, and how to view a copy of this License. If |
||||
the interface presents a list of user commands or options, such as a |
||||
menu, a prominent item in the list meets this criterion. |
||||
|
||||
1. Source Code. |
||||
|
||||
The "source code" for a work means the preferred form of the work |
||||
for making modifications to it. "Object code" means any non-source |
||||
form of a work. |
||||
|
||||
A "Standard Interface" means an interface that either is an official |
||||
standard defined by a recognized standards body, or, in the case of |
||||
interfaces specified for a particular programming language, one that |
||||
is widely used among developers working in that language. |
||||
|
||||
The "System Libraries" of an executable work include anything, other |
||||
than the work as a whole, that (a) is included in the normal form of |
||||
packaging a Major Component, but which is not part of that Major |
||||
Component, and (b) serves only to enable use of the work with that |
||||
Major Component, or to implement a Standard Interface for which an |
||||
implementation is available to the public in source code form. A |
||||
"Major Component", in this context, means a major essential component |
||||
(kernel, window system, and so on) of the specific operating system |
||||
(if any) on which the executable work runs, or a compiler used to |
||||
produce the work, or an object code interpreter used to run it. |
||||
|
||||
The "Corresponding Source" for a work in object code form means all |
||||
the source code needed to generate, install, and (for an executable |
||||
work) run the object code and to modify the work, including scripts to |
||||
control those activities. However, it does not include the work's |
||||
System Libraries, or general-purpose tools or generally available free |
||||
programs which are used unmodified in performing those activities but |
||||
which are not part of the work. For example, Corresponding Source |
||||
includes interface definition files associated with source files for |
||||
the work, and the source code for shared libraries and dynamically |
||||
linked subprograms that the work is specifically designed to require, |
||||
such as by intimate data communication or control flow between those |
||||
subprograms and other parts of the work. |
||||
|
||||
The Corresponding Source need not include anything that users |
||||
can regenerate automatically from other parts of the Corresponding |
||||
Source. |
||||
|
||||
The Corresponding Source for a work in source code form is that |
||||
same work. |
||||
|
||||
2. Basic Permissions. |
||||
|
||||
All rights granted under this License are granted for the term of |
||||
copyright on the Program, and are irrevocable provided the stated |
||||
conditions are met. This License explicitly affirms your unlimited |
||||
permission to run the unmodified Program. The output from running a |
||||
covered work is covered by this License only if the output, given its |
||||
content, constitutes a covered work. This License acknowledges your |
||||
rights of fair use or other equivalent, as provided by copyright law. |
||||
|
||||
You may make, run and propagate covered works that you do not |
||||
convey, without conditions so long as your license otherwise remains |
||||
in force. You may convey covered works to others for the sole purpose |
||||
of having them make modifications exclusively for you, or provide you |
||||
with facilities for running those works, provided that you comply with |
||||
the terms of this License in conveying all material for which you do |
||||
not control copyright. Those thus making or running the covered works |
||||
for you must do so exclusively on your behalf, under your direction |
||||
and control, on terms that prohibit them from making any copies of |
||||
your copyrighted material outside their relationship with you. |
||||
|
||||
Conveying under any other circumstances is permitted solely under |
||||
the conditions stated below. Sublicensing is not allowed; section 10 |
||||
makes it unnecessary. |
||||
|
||||
3. Protecting Users' Legal Rights From Anti-Circumvention Law. |
||||
|
||||
No covered work shall be deemed part of an effective technological |
||||
measure under any applicable law fulfilling obligations under article |
||||
11 of the WIPO copyright treaty adopted on 20 December 1996, or |
||||
similar laws prohibiting or restricting circumvention of such |
||||
measures. |
||||
|
||||
When you convey a covered work, you waive any legal power to forbid |
||||
circumvention of technological measures to the extent such circumvention |
||||
is effected by exercising rights under this License with respect to |
||||
the covered work, and you disclaim any intention to limit operation or |
||||
modification of the work as a means of enforcing, against the work's |
||||
users, your or third parties' legal rights to forbid circumvention of |
||||
technological measures. |
||||
|
||||
4. Conveying Verbatim Copies. |
||||
|
||||
You may convey verbatim copies of the Program's source code as you |
||||
receive it, in any medium, provided that you conspicuously and |
||||
appropriately publish on each copy an appropriate copyright notice; |
||||
keep intact all notices stating that this License and any |
||||
non-permissive terms added in accord with section 7 apply to the code; |
||||
keep intact all notices of the absence of any warranty; and give all |
||||
recipients a copy of this License along with the Program. |
||||
|
||||
You may charge any price or no price for each copy that you convey, |
||||
and you may offer support or warranty protection for a fee. |
||||
|
||||
5. Conveying Modified Source Versions. |
||||
|
||||
You may convey a work based on the Program, or the modifications to |
||||
produce it from the Program, in the form of source code under the |
||||
terms of section 4, provided that you also meet all of these conditions: |
||||
|
||||
a) The work must carry prominent notices stating that you modified |
||||
it, and giving a relevant date. |
||||
|
||||
b) The work must carry prominent notices stating that it is |
||||
released under this License and any conditions added under section |
||||
7. This requirement modifies the requirement in section 4 to |
||||
"keep intact all notices". |
||||
|
||||
c) You must license the entire work, as a whole, under this |
||||
License to anyone who comes into possession of a copy. This |
||||
License will therefore apply, along with any applicable section 7 |
||||
additional terms, to the whole of the work, and all its parts, |
||||
regardless of how they are packaged. This License gives no |
||||
permission to license the work in any other way, but it does not |
||||
invalidate such permission if you have separately received it. |
||||
|
||||
d) If the work has interactive user interfaces, each must display |
||||
Appropriate Legal Notices; however, if the Program has interactive |
||||
interfaces that do not display Appropriate Legal Notices, your |
||||
work need not make them do so. |
||||
|
||||
A compilation of a covered work with other separate and independent |
||||
works, which are not by their nature extensions of the covered work, |
||||
and which are not combined with it such as to form a larger program, |
||||
in or on a volume of a storage or distribution medium, is called an |
||||
"aggregate" if the compilation and its resulting copyright are not |
||||
used to limit the access or legal rights of the compilation's users |
||||
beyond what the individual works permit. Inclusion of a covered work |
||||
in an aggregate does not cause this License to apply to the other |
||||
parts of the aggregate. |
||||
|
||||
6. Conveying Non-Source Forms. |
||||
|
||||
You may convey a covered work in object code form under the terms |
||||
of sections 4 and 5, provided that you also convey the |
||||
machine-readable Corresponding Source under the terms of this License, |
||||
in one of these ways: |
||||
|
||||
a) Convey the object code in, or embodied in, a physical product |
||||
(including a physical distribution medium), accompanied by the |
||||
Corresponding Source fixed on a durable physical medium |
||||
customarily used for software interchange. |
||||
|
||||
b) Convey the object code in, or embodied in, a physical product |
||||
(including a physical distribution medium), accompanied by a |
||||
written offer, valid for at least three years and valid for as |
||||
long as you offer spare parts or customer support for that product |
||||
model, to give anyone who possesses the object code either (1) a |
||||
copy of the Corresponding Source for all the software in the |
||||
product that is covered by this License, on a durable physical |
||||
medium customarily used for software interchange, for a price no |
||||
more than your reasonable cost of physically performing this |
||||
conveying of source, or (2) access to copy the |
||||
Corresponding Source from a network server at no charge. |
||||
|
||||
c) Convey individual copies of the object code with a copy of the |
||||
written offer to provide the Corresponding Source. This |
||||
alternative is allowed only occasionally and noncommercially, and |
||||
only if you received the object code with such an offer, in accord |
||||
with subsection 6b. |
||||
|
||||
d) Convey the object code by offering access from a designated |
||||
place (gratis or for a charge), and offer equivalent access to the |
||||
Corresponding Source in the same way through the same place at no |
||||
further charge. You need not require recipients to copy the |
||||
Corresponding Source along with the object code. If the place to |
||||
copy the object code is a network server, the Corresponding Source |
||||
may be on a different server (operated by you or a third party) |
||||
that supports equivalent copying facilities, provided you maintain |
||||
clear directions next to the object code saying where to find the |
||||
Corresponding Source. Regardless of what server hosts the |
||||
Corresponding Source, you remain obligated to ensure that it is |
||||
available for as long as needed to satisfy these requirements. |
||||
|
||||
e) Convey the object code using peer-to-peer transmission, provided |
||||
you inform other peers where the object code and Corresponding |
||||
Source of the work are being offered to the general public at no |
||||
charge under subsection 6d. |
||||
|
||||
A separable portion of the object code, whose source code is excluded |
||||
from the Corresponding Source as a System Library, need not be |
||||
included in conveying the object code work. |
||||
|
||||
A "User Product" is either (1) a "consumer product", which means any |
||||
tangible personal property which is normally used for personal, family, |
||||
or household purposes, or (2) anything designed or sold for incorporation |
||||
into a dwelling. In determining whether a product is a consumer product, |
||||
doubtful cases shall be resolved in favor of coverage. For a particular |
||||
product received by a particular user, "normally used" refers to a |
||||
typical or common use of that class of product, regardless of the status |
||||
of the particular user or of the way in which the particular user |
||||
actually uses, or expects or is expected to use, the product. A product |
||||
is a consumer product regardless of whether the product has substantial |
||||
commercial, industrial or non-consumer uses, unless such uses represent |
||||
the only significant mode of use of the product. |
||||
|
||||