Compare commits
69 commits
Author | SHA1 | Date | |
---|---|---|---|
c7dad66bfc | |||
53dbbb8956 | |||
f319be259d | |||
7f99c47327 | |||
ba00714ce7 | |||
95200b8d94 | |||
9b901810d7 | |||
b0a7ff757a | |||
bff6c0e339 | |||
36c3bf60a0 | |||
f722d770f3 | |||
d8d293ea7c | |||
734f4b90db | |||
4ba0f9ace7 | |||
cfbf1bca84 | |||
fb9448ef71 | |||
44a1411f8f | |||
457d456e5d | |||
c87a58fcd9 | |||
29cdea20c6 | |||
c927dbfb2a | |||
737c957802 | |||
07bd63aabd | |||
807e596637 | |||
b8fd7f8995 | |||
c6549500bc | |||
931e166c80 | |||
185ffe6e33 | |||
4b12f63f2c | |||
0136998304 | |||
e5ef7b7004 | |||
8a5331f2c5 | |||
4ce7c9f85e | |||
7049dfa80e | |||
98c2bb7130 | |||
2e4be6c9b9 | |||
1ae38232a1 | |||
7f79c78c23 | |||
88f1732bdc | |||
3768bb6fe3 | |||
a920273f67 | |||
db1ac237c9 | |||
f2c2e5a8e0 | |||
512bc25f06 | |||
c0039d7c47 | |||
cd65f6ab22 | |||
4431a346a6 | |||
4494485f11 | |||
7ea3705e34 | |||
9671fd0ee7 | |||
e8f30c292e | |||
d9aed7e2a3 | |||
31d152831f | |||
a60b06c1be | |||
6aef2b0aaf | |||
75c9367c2e | |||
5b33dc0a90 | |||
6745416d94 | |||
d7574e2ada | |||
6218f1e34a | |||
82f4b18763 | |||
703b69c4a8 | |||
0ada5cf38f | |||
d72fb3fe6b | |||
8d94b43d76 | |||
d2fc5b0efa | |||
d48200af4e | |||
92631dc015 | |||
013659e034 |
15 changed files with 4328 additions and 136 deletions
1
.env.dev
1
.env.dev
|
@ -10,3 +10,4 @@ SINTONIA_USER=sintonia
|
|||
SINTONIA_UID=1000
|
||||
SINTONIA_NODE_VERSION=22.13.0
|
||||
SINTONIA_CONFIG_FILEPATH=./dev/sintonia-webapp/laravel/.env.dev.example
|
||||
SINTONIA_NGINX_CONFIG_FILEPATH=./docker/nginx-sintonia.conf.template
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -157,3 +157,6 @@ dmypy.json
|
|||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# sintonia
|
||||
docker/sintonia-webapp/laravel/.env.production
|
2
.gitmodules
vendored
2
.gitmodules
vendored
|
@ -1,3 +1,5 @@
|
|||
[submodule "sintonia_webapp"]
|
||||
path = sintonia_webapp
|
||||
url = ssh://gitea@git.congegni.net:4022/Congegni/sintonia_webapp.git
|
||||
branch = dev
|
||||
update = merge
|
||||
|
|
98
Dockerfile
98
Dockerfile
|
@ -284,7 +284,7 @@ ENV LIBRETIME_VERSION=$LIBRETIME_VERSION
|
|||
#======================================================================================#
|
||||
|
||||
# Use PHP as the base
|
||||
FROM php:8.2-cli AS sintonia-webapp-base
|
||||
FROM php:8.2-fpm AS sintonia-webapp-base
|
||||
|
||||
# Arguments defined in docker-compose-dev.yml
|
||||
ARG sintonia_user=$SINTONIA_USER
|
||||
|
@ -308,21 +308,27 @@ RUN set -eux && \
|
|||
libpng-dev \
|
||||
git \
|
||||
libonig-dev \
|
||||
libpq-dev
|
||||
libpq-dev \
|
||||
cron && \
|
||||
apt-get clean && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN docker-php-ext-configure zip && \
|
||||
docker-php-ext-configure gd --with-freetype --with-jpeg
|
||||
|
||||
RUN docker-php-ext-install gd exif pcntl bcmath mysqli pdo_mysql mbstring && \
|
||||
docker-php-ext-install pdo_pgsql pgsql && \
|
||||
apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||
docker-php-ext-install pdo_pgsql pgsql sockets
|
||||
|
||||
# Create system user to run Composer and Artisan Commands
|
||||
RUN set -eux && useradd -G www-data -u $sintonia_uid -d /home/$sintonia_user $sintonia_user && \
|
||||
mkdir -p /home/$sintonia_user/.composer && \
|
||||
mkdir -p /var/www/sintonia_webapp && \
|
||||
chown -R $sintonia_user:$sintonia_user /home/$sintonia_user && \
|
||||
chown -R $sintonia_user:$sintonia_user /var/www/sintonia_webapp
|
||||
chown -R $sintonia_user:$sintonia_user /home/$sintonia_user
|
||||
|
||||
RUN echo "* * * * * cd /var/www/sintonia_webapp && /usr/local/bin/php artisan schedule:run >> /proc/1/fd/1 2>> /proc/1/fd/2" >> /etc/cron.d/laravel_jobs && \
|
||||
chown $sintonia_user:$sintonia_user /etc/cron.d/laravel_jobs && \
|
||||
chmod 0600 /etc/cron.d/laravel_jobs && \
|
||||
crontab -u $sintonia_user /etc/cron.d/laravel_jobs && \
|
||||
chmod u+s /usr/sbin/cron
|
||||
|
||||
USER "$sintonia_user"
|
||||
WORKDIR /home/$sintonia_user
|
||||
|
@ -345,6 +351,7 @@ ARG libretime_config_filepath=$LIBRETIME_CONFIG_FILEPATH
|
|||
USER root
|
||||
ENV DEBIAN_FRONTEND=noninteractive
|
||||
RUN apt-get update && apt-get install yq -y
|
||||
RUN sed -i 's/listen = 127.0.0.1:9000/listen = nginx:9000/g' /usr/local/etc/php-fpm.d/www.conf
|
||||
USER "$sintonia_user"
|
||||
|
||||
WORKDIR $HOME
|
||||
|
@ -364,45 +371,68 @@ ENV sintonia_laravel_port=${sintonia_laravel_port}
|
|||
ENV sintonia_vite_port=${sintonia_vite_port}
|
||||
|
||||
USER root
|
||||
RUN pecl install xdebug && docker-php-ext-enable xdebug;
|
||||
|
||||
RUN pecl install xdebug && \
|
||||
docker-php-ext-enable xdebug && \
|
||||
echo 'xdebug.mode = develop,debug\nxdebug.client_host=host.docker.internal\nxdebug.start_with_request=yes\nxdebug.discover_client_host=1' >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini && \
|
||||
echo 'error_reporting=E_ALL' > /usr/local/etc/php/conf.d/error_reporting.ini
|
||||
|
||||
RUN touch /usr/local/var/log/fpm-php.access.log /usr/local/var/log/fpm-php.error.log && \
|
||||
chown $sintonia_user:$sintonia_user /usr/local/var/log/fpm-php.access.log /usr/local/var/log/fpm-php.error.log && \
|
||||
chmod 660 /usr/local/var/log/fpm-php.access.log /usr/local/var/log/fpm-php.error.log && \
|
||||
sed -i 's/access.log = \/proc\/self\/fd\/2/access.log = \/usr\/local\/var\/log\/fpm-php.access.log/g' /usr/local/etc/php-fpm.d/docker.conf && \
|
||||
sed -i 's/error_log = \/proc\/self\/fd\/2/error_log = \/usr\/local\/var\/log\/fpm-php.error.log/g' /usr/local/etc/php-fpm.d/docker.conf && \
|
||||
mkdir -p /var/www/sintonia_webapp && \
|
||||
chown -R $sintonia_user:$sintonia_user /var/www/sintonia_webapp
|
||||
|
||||
COPY ./dev/sintonia-webapp/php/php-ini-development /usr/local/etc/php/php.ini
|
||||
|
||||
USER $sintonia_user
|
||||
|
||||
WORKDIR /var/www/sintonia_webapp
|
||||
#COPY --chown=$sintonia_user:$sintonia_user ./sintonia_webapp/ ./
|
||||
|
||||
#Package installation
|
||||
#RUN git config --global --add safe.directory /var/www/sintonia_webapp && \
|
||||
# /home/$sintonia_user/composer install --no-progress --no-interaction --no-dev --no-autoloader && \
|
||||
# set -eux && \
|
||||
# npm i
|
||||
|
||||
#RUN php artisan ziggy:generate && mv ziggy.js resources/utils/ziggy.js
|
||||
#RUN cp $HOME/.env ./
|
||||
ENV sintonia_user=${sintonia_user}
|
||||
|
||||
### Start server
|
||||
CMD git config --global --add safe.directory /var/www/sintonia_webapp && \
|
||||
/home/$sintonia_user/composer install --no-progress --no-interaction --no-dev --no-autoloader && \
|
||||
/home/$sintonia_user/composer --no-cache dump-autoload --no-interaction --no-dev && \
|
||||
php artisan key:generate && \
|
||||
set -eux && \
|
||||
npm i && \
|
||||
npx vite --port $sintonia_vite_port --host & \
|
||||
php artisan serve --host=0.0.0.0 --port=$sintonia_laravel_port & \
|
||||
sleep infinity
|
||||
CMD cron && \
|
||||
php artisan key:generate && \
|
||||
git config --global --add safe.directory /var/www/sintonia_webapp && \
|
||||
/home/$sintonia_user/composer install --no-progress --no-interaction && \
|
||||
/home/$sintonia_user/composer --no-cache dump-autoload --no-interaction && \
|
||||
php artisan migrate && \
|
||||
php artisan db:seed RolesAndPermissionsSeeder && \
|
||||
php artisan schedule:run >> /dev/null 2>&1 && \
|
||||
set -eux && \
|
||||
npm i && \
|
||||
php-fpm -D && \
|
||||
npx vite --port $sintonia_vite_port --host & \
|
||||
sleep infinity
|
||||
|
||||
|
||||
|
||||
FROM sintonia-webapp-build-common AS sintonia-webapp-production
|
||||
|
||||
RUN git clone https://git.congegni.net/sintonia_webapp && \
|
||||
cd sintonia_webapp && \
|
||||
php artisan ziggy:generate && \
|
||||
USER root
|
||||
|
||||
COPY ./docker/sintonia-webapp/php/php-ini-production /usr/local/etc/php/php.ini
|
||||
|
||||
USER $sintonia_user
|
||||
ENV sintonia_user=${sintonia_user}
|
||||
WORKDIR /var/www/sintonia_webapp
|
||||
|
||||
RUN git clone --branch main --single-branch https://git.congegni.net/Congegni/sintonia_webapp .
|
||||
|
||||
CMD git pull && \
|
||||
/home/$sintonia_user/composer install --no-progress --no-interaction --no-dev && \
|
||||
/home/$sintonia_user/composer --no-cache dump-autoload --no-interaction && \
|
||||
npm i && \
|
||||
npm run build && \
|
||||
php artisan key:generate && \
|
||||
mv ziggy.js resources/utils/ziggy.js && \
|
||||
npx vite build && \
|
||||
cp -r dist/build/* /var/www/html/ && \
|
||||
rm -rf /var/www/sintonia_webapp/node_modules /var/www/sintonia_webapp/.npm /var/www/sintonia_webapp/.composer /var/www/sintonia_webapp/.git && \
|
||||
rm -rf /home/$sintonia_user/node* /home/$sintonia_user/composer
|
||||
php artisan migrate && \
|
||||
php artisan db:seed && \
|
||||
php artisan schedule:run >> /dev/null 2>&1 && \
|
||||
cron && \
|
||||
php-fpm -F
|
||||
|
||||
|
||||
|
||||
|
|
160
README.md
160
README.md
|
@ -1,72 +1,134 @@
|
|||
# [](https://github.com/libretime/libretime)
|
||||
# Sintonia
|
||||
|
||||
[](https://opencollective.com/libretime)
|
||||
The project involves the development of an application (to be released as open-source) that will handle all aspects of managing a radio station, whether it operates purely online or uses radio wave transmitters.
|
||||
|
||||
LibreTime makes it easy to run your own online or terrestrial radio station. It
|
||||
is a community managed fork of the AirTime project.
|
||||
Link to [sintonia_webapp repo](https://git.congegni.net/Congegni/sintonia_webapp).
|
||||
|
||||
It is managed by a friendly inclusive community of stations from around the
|
||||
globe that use, document and improve LibreTime. Join us in fixing bugs and in
|
||||
defining how we manage the codebase going forward.
|
||||
The application will therefore need to allow for:
|
||||
|
||||
Check out the [documentation](https://libretime.org/docs/) for more information and
|
||||
start broadcasting!
|
||||
- Managing multiple users with three different types of permissions (administrator, editor, and DJ);
|
||||
- Managing the audio file archive (adding, deleting), allowing uploads from remote sources such as individual audio files on other servers or RSS feeds;
|
||||
- Adding, modifying, and deleting broadcasts within the schedule, and scheduling (both in advance and in real-time) the playlists within individual episodes of a broadcast;
|
||||
- Creating both static and dynamic playlists that can be used within one or more episodes of one or more broadcasts;
|
||||
- Managing and scheduling advertisements, both private and governmental;
|
||||
- Exporting the history of songs played within a specific time frame;
|
||||
|
||||
Please note that LibreTime is released with a [Contributor Code
|
||||
of Conduct](https://github.com/libretime/organization/blob/main/CODE_OF_CONDUCT.md).
|
||||
By participating in this project you agree to abide by its terms.
|
||||
Development is expected to start from the free and open-source software [LibreTime](https://libretime.org), which will be forked while retaining all playout and backend functionalities.
|
||||
This will be complemented by a new web application (hereafter referred to as "Sintonia") to replace the original application (hereafter referred to as "Legacy").
|
||||
|
||||
You can find details about our development process in the
|
||||
[contributing](./CONTRIBUTING.md) guide.
|
||||
This application will replicate the functions of the previous one while integrating new features, providing a more intuitive and simple user experience thanks to a new graphic design agreed upon.
|
||||
|
||||
## Build and run the dev containers
|
||||
|
||||
Ensure docker is installed, and its service is up and running
|
||||
|
||||
One can quickly test docker by running:
|
||||
```
|
||||
docker run hello-world
|
||||
```
|
||||
|
||||
Clone this repo using the command git clone and the url of this repo.
|
||||
|
||||
This repo contains a git submodule sintonia_webapp, it refers to this [repo](https://git.congegni.net/Congegni/sintonia_webapp).
|
||||
|
||||
Right now the submodule is not properly set up.
|
||||
So open a terminal in the root of this project, sintonia, and run this command:
|
||||
```
|
||||
git clone ssh://gitea@git.congegni.net:4022/Congegni/sintonia_webapp.git && cd sintonia_webapp && git checkout dev && cp .env.dev .env && cd ..
|
||||
```
|
||||
|
||||
The folder sintonia_webapp now it's synced with the dev branch (the currently active branch).
|
||||
|
||||
Return to the sintonia project folder, run these commands:
|
||||
|
||||
```
|
||||
# Clean and build
|
||||
make clean
|
||||
cp .env.dev .env
|
||||
DOCKER_BUILDKIT=1 docker compose build
|
||||
|
||||
# Setup
|
||||
make dev-certs
|
||||
docker compose run --rm legacy make build
|
||||
docker compose run --rm api libretime-api migrate
|
||||
```
|
||||
|
||||
Run the following command:
|
||||
```
|
||||
docker compose -f docker-compose.yml -f docker-compose.override.yml build && docker compose up -d && docker container restart sintonia-webapp-dev
|
||||
```
|
||||
|
||||
This command builds the docker containers in dev mode, then it will attempt to start them up.
|
||||
|
||||
The sintonia web app is reachable on the port indicated in the env var SINTONIA_LARAVEL_PORT, by default the port is 9876.
|
||||
|
||||
So proceed to open a browser, connect to http://127.0.0.1:9876 (if no config or vars were changed).
|
||||
|
||||
Usually the user created by default is login: admin password: admin
|
||||
|
||||
## Prod containers
|
||||
|
||||
The prod container for Sintonia is under development, it may be unstable
|
||||
|
||||
First of all
|
||||
|
||||
## HW usage
|
||||
The stats below refer to the containers without any load and some test data
|
||||
|
||||
`
|
||||
docker stats --no-stream
|
||||
|
||||
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
|
||||
|
||||
fdc43da14053 sintonia-postgres-1 0.33% 236.7MiB / 30.95GiB 0.75% 86.4MB / 45.2MB 1.11GB / 906MB 9
|
||||
|
||||
74c48a47033c sintonia-liquidsoap-1 23.00% 78.48MiB / 30.95GiB 0.25% 113MB / 2.61GB 281MB / 0B 12
|
||||
|
||||
f97521670581 sintonia-playout-1 0.00% 43.95MiB / 30.95GiB 0.14% 39.9MB / 6.85MB 52.5MB / 0B 2
|
||||
|
||||
5c8bf1fe4e61 sintonia-legacy-1 0.01% 64.21MiB / 30.95GiB 0.20% 24.4MB / 24.2MB 136MB / 0B 5
|
||||
|
||||
b868aad49ccc sintonia-nginx-1 0.00% 11.46MiB / 30.95GiB 0.04% 96MB / 110MB 36.4MB / 0B 9
|
||||
|
||||
e89bf2b1a732 sintonia-worker-1 0.20% 96.11MiB / 30.95GiB 0.30% 8.93MB / 8.26MB 45.8MB / 2.03MB 4
|
||||
|
||||
e18346d6b201 sintonia-analyzer-1 0.02% 32.97MiB / 30.95GiB 0.10% 454kB / 106kB 34.8MB / 0B 3
|
||||
|
||||
7341e6559130 sintonia-webapp-dev 0.09% 492.6MiB / 30.95GiB 1.55% 46.3MB / 254MB 742MB / 28.1MB 41
|
||||
|
||||
959c88dc8a46 sintonia-api-1 4.39% 121.4MiB / 30.95GiB 0.38% 395kB / 79kB 83.6MB / 0B 4
|
||||
`
|
||||
|
||||
### RAM
|
||||
1177.88MB
|
||||
|
||||
### Images size
|
||||
4460.7MB
|
||||
|
||||
### Reverse proxy configuration
|
||||
|
||||
A reverse proxy may be set used to relay all the requests to the internal nginx server.
|
||||
|
||||
A sample nginx file can be found at /docker/nginx-host.conf
|
||||
|
||||
## Support
|
||||
|
||||
To get support for any questions or problems you might have using the software
|
||||
we have a forum at [discourse.libretime.org](https://discourse.libretime.org).
|
||||
We are moving towards using the forum to provide community support and reserving
|
||||
the github issue queue for confirmed bugs and well-formed feature requests.
|
||||
|
||||
You can also contact us through [Matrix
|
||||
(#libretime:matrix.org)](https://matrix.to/#/#libretime:matrix.org)
|
||||
where you can talk with other users and developers.
|
||||
Coming soon
|
||||
|
||||
## Contributors
|
||||
|
||||
### Code Contributors
|
||||
|
||||
This project exists thanks to all the people who [contribute](CONTRIBUTING.md).
|
||||
Sintonia is being developed by [Congegni](https://congegni.net)
|
||||
|
||||
### Financial Contributors
|
||||
|
||||
Become a financial contributor and help us sustain our community on
|
||||
[OpenCollective](https://opencollective.com/libretime/contribute).
|
||||
|
||||
#### Individuals
|
||||
|
||||
<a href="https://opencollective.com/libretime">
|
||||
<img src="https://opencollective.com/libretime/individuals.svg?width=890">
|
||||
</a>
|
||||
|
||||
#### Organizations
|
||||
|
||||
[Support](https://opencollective.com/libretime/contribute) this project with
|
||||
your organization. Your logo will show up here with a link to your website.
|
||||
|
||||
<a href="https://opencollective.com/libretime">
|
||||
<img src="https://opencollective.com/libretime/organizations.svg?width=890">
|
||||
</a>
|
||||
 [Arci Firenze Aps](https://www.arcifirenze.it/)
|
||||
|
||||
## License
|
||||
|
||||
LibreTime is free software: you can redistribute it and/or
|
||||
modify it under the terms of the GNU Affero General Public
|
||||
License as published by the Free Software Foundation,
|
||||
version 3 of the License.
|
||||
Coming soon
|
||||
|
||||
## Copyright
|
||||
|
||||
Copyright (c) 2011-2017 Sourcefabric z.ú.
|
||||
|
||||
Copyright (c) 2017-2023 LibreTime Community
|
||||
|
||||
Please refer to the [LEGACY](./LEGACY.md) file for more information.
|
||||
Coming soon
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
general:
|
||||
public_url: http://localhost:8080
|
||||
public_url: http://127.0.0.1:8080
|
||||
api_key: some_secret_api_key
|
||||
secret_key: some_secret_key
|
||||
|
||||
|
@ -25,7 +25,7 @@ liquidsoap:
|
|||
stream:
|
||||
inputs:
|
||||
main:
|
||||
public_url: https://localhost:8001/main
|
||||
public_url: https://127.0.0.1:8001/main
|
||||
mount: main
|
||||
port: 8001
|
||||
secure: true
|
||||
|
@ -45,7 +45,7 @@ stream:
|
|||
- <<: *default_icecast_output
|
||||
enabled: true
|
||||
mount: main.ogg
|
||||
public_url: https://localhost:8443/main.ogg
|
||||
public_url: https://127.0.0.1:8443/main.ogg
|
||||
audio:
|
||||
format: ogg
|
||||
bitrate: 256
|
||||
|
@ -53,7 +53,7 @@ stream:
|
|||
- <<: *default_icecast_output
|
||||
enabled: true
|
||||
mount: main.opus
|
||||
public_url: https://localhost:8443/main.opus
|
||||
public_url: https://127.0.0.1:8443/main.opus
|
||||
audio:
|
||||
format: opus
|
||||
bitrate: 256
|
||||
|
@ -61,7 +61,7 @@ stream:
|
|||
- <<: *default_icecast_output
|
||||
enabled: true
|
||||
mount: main.mp3
|
||||
public_url: https://localhost:8443/main.mp3
|
||||
public_url: https://127.0.0.1:8443/main.mp3
|
||||
audio:
|
||||
format: mp3
|
||||
bitrate: 256
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
APP_NAME=Sintonia
|
||||
APP_ENV=local
|
||||
APP_KEY=base64:vxFbOz6qPvNW2RpEFw/XOWdZ9+X5oXwqnUgjHETJHQM=
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_TIMEZONE=UTC
|
||||
APP_URL=http://127.0.0.1
|
||||
APP_URL=http://127.0.0.1:9876
|
||||
SANCTUM_STATEFUL_DOMAINS=http://127.0.0.1
|
||||
|
||||
APP_LOCALE=en
|
||||
APP_FALLBACK_LOCALE=en
|
||||
|
@ -11,7 +12,8 @@ APP_FAKER_LOCALE=en_US
|
|||
|
||||
APP_MAINTENANCE_DRIVER=file
|
||||
# APP_MAINTENANCE_STORE=database
|
||||
|
||||
HASH_VERIFY=false
|
||||
TELESCOPE_ENABLED=true
|
||||
PHP_CLI_SERVER_WORKERS=4
|
||||
|
||||
BCRYPT_ROUNDS=12
|
||||
|
@ -28,15 +30,14 @@ DB_DATABASE=libretime
|
|||
DB_USERNAME=libretime
|
||||
DB_PASSWORD=libretime
|
||||
|
||||
SESSION_DRIVER=database
|
||||
SESSION_DRIVER=cookie
|
||||
SESSION_LIFETIME=120
|
||||
SESSION_ENCRYPT=false
|
||||
SESSION_PATH=/
|
||||
SESSION_DOMAIN=null
|
||||
SESSION_DOMAIN=127.0.0.1
|
||||
|
||||
BROADCAST_CONNECTION=log
|
||||
FILESYSTEM_DISK=local
|
||||
QUEUE_CONNECTION=database
|
||||
|
||||
CACHE_STORE=database
|
||||
CACHE_PREFIX=
|
||||
|
@ -64,3 +65,12 @@ AWS_BUCKET=
|
|||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
VITE_APP_NAME="${APP_NAME}"
|
||||
|
||||
QUEUE_CONNECTION=rabbitmq
|
||||
RABBITMQ_HOST=rabbitmq
|
||||
RABBITMQ_PORT=5672
|
||||
RABBITMQ_VHOST=/libretime
|
||||
RABBITMQ_LOGIN=libretime
|
||||
RABBITMQ_PASSWORD=libretime
|
||||
|
||||
VITE_APP_TIMEZONE=UTC
|
1972
dev/sintonia-webapp/php/php-ini-development
Normal file
1972
dev/sintonia-webapp/php/php-ini-development
Normal file
File diff suppressed because it is too large
Load diff
|
@ -77,17 +77,23 @@ services:
|
|||
container_name: sintonia-webapp-dev
|
||||
working_dir: /var/www/sintonia_webapp
|
||||
volumes:
|
||||
- ./dev/sintonia-webapp/laravel/.env.dev:/var/www/sintonia_webapp/.env
|
||||
- ./sintonia_webapp:/var/www/sintonia_webapp
|
||||
- libretime_storage:/srv/libretime
|
||||
ports:
|
||||
- ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT}
|
||||
- 9000:9000
|
||||
# - ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT}
|
||||
- ${SINTONIA_VITE_PORT}:${SINTONIA_VITE_PORT}
|
||||
environment:
|
||||
- sintonia_laravel_port=${SINTONIA_LARAVEL_PORT}
|
||||
- sintonia_vite_port=${SINTONIA_VITE_PORT}
|
||||
- PHP_IDE_CONFIG=serverName=sintonia
|
||||
restart: always
|
||||
|
||||
nginx:
|
||||
volumes:
|
||||
- ./legacy:/var/www/html
|
||||
- ./sintonia_webapp:/var/www/sintonia_webapp
|
||||
|
||||
icecast:
|
||||
ports:
|
||||
|
|
|
@ -29,7 +29,7 @@ services:
|
|||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_playout:/app
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
|
||||
|
||||
liquidsoap:
|
||||
image: ghcr.io/libretime/libretime-playout:${LIBRETIME_VERSION:-latest}
|
||||
|
@ -46,7 +46,7 @@ services:
|
|||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_playout:/app
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
|
||||
|
||||
analyzer:
|
||||
image: ghcr.io/libretime/libretime-analyzer:${LIBRETIME_VERSION:-latest}
|
||||
|
@ -59,7 +59,7 @@ services:
|
|||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_storage:/srv/libretime
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
|
||||
|
||||
worker:
|
||||
image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest}
|
||||
|
@ -71,7 +71,7 @@ services:
|
|||
volumes:
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
|
||||
environment:
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
|
||||
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
|
||||
|
||||
api:
|
||||
image: ghcr.io/libretime/libretime-api:${LIBRETIME_VERSION:-latest}
|
||||
|
@ -100,7 +100,6 @@ services:
|
|||
|
||||
sintonia-webapp:
|
||||
build:
|
||||
context: ./sintonia_webapp
|
||||
target: sintonia-webapp-production
|
||||
args:
|
||||
- sintonia_user=${SINTONIA_USER}
|
||||
|
@ -108,28 +107,35 @@ services:
|
|||
- sintonia_node_version=${SINTONIA_NODE_VERSION}
|
||||
- sintonia_config_filepath=${SINTONIA_CONFIG_FILEPATH}
|
||||
- libretime_config_filepath=${LIBRETIME_CONFIG_FILEPATH}
|
||||
image: sintonia-webapp-prod
|
||||
container_name: sintonia-webapp-prod
|
||||
container_name: sintonia-webapp-production
|
||||
depends_on:
|
||||
- postgres
|
||||
- rabbitmq
|
||||
init: true
|
||||
working_dir: /var/www/sintonia_webapp
|
||||
volumes:
|
||||
- ./docker/sintonia-webapp/laravel/.env.production:/var/www/sintonia_webapp/.env
|
||||
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
|
||||
- libretime_storage:/srv/libretime
|
||||
- libretime_assets:/var/www/html
|
||||
- sintonia_assets:/var/www/sintonia_webapp
|
||||
|
||||
nginx:
|
||||
image: nginx
|
||||
ports:
|
||||
- 8080:8080
|
||||
- ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT}
|
||||
depends_on:
|
||||
- legacy
|
||||
- sintonia-webapp
|
||||
environment:
|
||||
- SINTONIA_LARAVEL_PORT=${SINTONIA_LARAVEL_PORT}
|
||||
volumes:
|
||||
- libretime_assets:/var/www/html:ro
|
||||
- libretime_storage:/srv/libretime:ro
|
||||
- ${SINTONIA_NGINX_CONFIG_FILEPATH:-./nginx-sintonia.conf.template}:/etc/nginx/templates/sintonia.conf.template:ro
|
||||
- ${NGINX_CONFIG_FILEPATH:-./nginx.conf}:/etc/nginx/conf.d/default.conf:ro
|
||||
- sintonia_assets:/var/www/sintonia_webapp
|
||||
|
||||
icecast:
|
||||
image: ghcr.io/libretime/icecast:2.4.4
|
||||
|
@ -145,3 +151,5 @@ volumes:
|
|||
libretime_storage: {}
|
||||
libretime_assets: {}
|
||||
libretime_playout: {}
|
||||
sintonia_assets: {}
|
||||
|
||||
|
|
41
docker/nginx-host.conf
Normal file
41
docker/nginx-host.conf
Normal file
|
@ -0,0 +1,41 @@
|
|||
server {
|
||||
listen 80;
|
||||
add_header Content-Security-Policy "upgrade-insecure-requests;";
|
||||
|
||||
server_name sintonia.congegni.net;
|
||||
|
||||
client_max_body_size 512M;
|
||||
client_body_timeout 300s;
|
||||
|
||||
if ($host = sintonia.congegni.net) {
|
||||
return 301 https://$host$request_uri;
|
||||
} # managed by Certbot
|
||||
|
||||
return 404; # managed by Certbot
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl; # managed by Certbot
|
||||
server_name sintonia.congegni.net;
|
||||
add_header Content-Security-Policy "upgrade-insecure-requests;";
|
||||
|
||||
client_max_body_size 512M;
|
||||
client_body_timeout 300s;
|
||||
ssl_certificate /etc/letsencrypt/live/sintonia.congegni.net/fullchain.pem; # managed by Certbot
|
||||
ssl_certificate_key /etc/letsencrypt/live/sintonia.congegni.net/privkey.pem; # managed by Certbot
|
||||
|
||||
location / {
|
||||
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 $scheme;
|
||||
proxy_set_header X-Forwarded-Host $host;
|
||||
proxy_set_header X-Forwarded-Port $server_port;
|
||||
|
||||
proxy_set_header Access-Control-Allow-Origin *;
|
||||
proxy_set_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT";
|
||||
proxy_set_header Access-Control-Allow-Headers "Authorization, Content-Type, Accept";
|
||||
|
||||
proxy_pass http://127.0.0.1:9876;
|
||||
}
|
||||
}
|
66
docker/nginx-sintonia.conf.template
Normal file
66
docker/nginx-sintonia.conf.template
Normal file
|
@ -0,0 +1,66 @@
|
|||
server {
|
||||
listen ${SINTONIA_LARAVEL_PORT};
|
||||
|
||||
root /var/www/sintonia_webapp/public;
|
||||
|
||||
add_header X-Frame-Options "SAMEORIGIN";
|
||||
add_header X-Content-Type-Options "nosniff";
|
||||
|
||||
index index.php;
|
||||
|
||||
charset utf-8;
|
||||
|
||||
client_max_body_size 512M;
|
||||
client_body_timeout 300s;
|
||||
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT";
|
||||
add_header Access-Control-Allow-Headers "Authorization, Content-Type, Accept";
|
||||
|
||||
location / {
|
||||
if ($request_method = 'OPTIONS') {
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT";
|
||||
add_header Access-Control-Allow-Headers "Authorization, Content-Type, Accept";
|
||||
return 204;
|
||||
}
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
location = /favicon.ico { access_log off; log_not_found off; }
|
||||
location = /robots.txt { access_log off; log_not_found off; }
|
||||
|
||||
error_page 404 /index.php;
|
||||
|
||||
location ~ \.php$ {
|
||||
fastcgi_pass sintonia-webapp:9000;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
fastcgi_param SERVER_NAME sintonia;
|
||||
include fastcgi_params;
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS, DELETE, PUT";
|
||||
add_header Access-Control-Allow-Headers "Authorization, Content-Type, Accept";
|
||||
}
|
||||
|
||||
location ~ /\.(?!well-known).* {
|
||||
deny all;
|
||||
}
|
||||
|
||||
# Internal path for serving media files from the API.
|
||||
location /api/_media {
|
||||
internal;
|
||||
# This alias path must match the 'storage.path' configuration field.
|
||||
alias /srv/libretime;
|
||||
}
|
||||
|
||||
location ~ ^/api/(v2|browser) {
|
||||
proxy_set_header Host $http_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 $scheme;
|
||||
|
||||
proxy_redirect off;
|
||||
proxy_pass http://api:9001;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,39 +1,60 @@
|
|||
APP_NAME=Laravel
|
||||
APP_NAME=Sintonia
|
||||
APP_ENV=local
|
||||
APP_KEY=
|
||||
APP_DEBUG=true
|
||||
APP_URL=http://localhost
|
||||
APP_DEBUG=false
|
||||
APP_TIMEZONE=UTC
|
||||
APP_URL=http://127.0.0.1:9876
|
||||
SANCTUM_STATEFUL_DOMAINS=http://127.0.0.1
|
||||
|
||||
APP_LOCALE=en
|
||||
APP_FALLBACK_LOCALE=en
|
||||
APP_FAKER_LOCALE=en_US
|
||||
|
||||
APP_MAINTENANCE_DRIVER=file
|
||||
# APP_MAINTENANCE_STORE=database
|
||||
HASH_VERIFY=false
|
||||
TELESCOPE_ENABLED=true
|
||||
PHP_CLI_SERVER_WORKERS=4
|
||||
|
||||
BCRYPT_ROUNDS=12
|
||||
|
||||
LOG_CHANNEL=stack
|
||||
LOG_STACK=single
|
||||
LOG_DEPRECATIONS_CHANNEL=null
|
||||
LOG_LEVEL=debug
|
||||
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=laravel
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=
|
||||
DB_CONNECTION=pgsql
|
||||
DB_HOST=postgres
|
||||
DB_PORT=5432
|
||||
DB_DATABASE=libretime
|
||||
DB_USERNAME=libretime
|
||||
DB_PASSWORD=libretime
|
||||
|
||||
BROADCAST_DRIVER=log
|
||||
CACHE_DRIVER=file
|
||||
FILESYSTEM_DISK=local
|
||||
QUEUE_CONNECTION=sync
|
||||
SESSION_DRIVER=file
|
||||
SESSION_DRIVER=cookie
|
||||
SESSION_LIFETIME=120
|
||||
SESSION_ENCRYPT=false
|
||||
SESSION_PATH=/
|
||||
SESSION_DOMAIN=127.0.0.1
|
||||
|
||||
BROADCAST_CONNECTION=log
|
||||
FILESYSTEM_DISK=local
|
||||
|
||||
CACHE_STORE=database
|
||||
CACHE_PREFIX=
|
||||
|
||||
MEMCACHED_HOST=127.0.0.1
|
||||
|
||||
REDIS_CLIENT=phpredis
|
||||
REDIS_HOST=127.0.0.1
|
||||
REDIS_PASSWORD=null
|
||||
REDIS_PORT=6379
|
||||
|
||||
MAIL_MAILER=smtp
|
||||
MAIL_HOST=mailpit
|
||||
MAIL_PORT=1025
|
||||
MAIL_MAILER=log
|
||||
MAIL_SCHEME=null
|
||||
MAIL_HOST=127.0.0.1
|
||||
MAIL_PORT=2525
|
||||
MAIL_USERNAME=null
|
||||
MAIL_PASSWORD=null
|
||||
MAIL_ENCRYPTION=null
|
||||
MAIL_FROM_ADDRESS="hello@example.com"
|
||||
MAIL_FROM_NAME="${APP_NAME}"
|
||||
|
||||
|
@ -43,17 +64,13 @@ AWS_DEFAULT_REGION=us-east-1
|
|||
AWS_BUCKET=
|
||||
AWS_USE_PATH_STYLE_ENDPOINT=false
|
||||
|
||||
PUSHER_APP_ID=
|
||||
PUSHER_APP_KEY=
|
||||
PUSHER_APP_SECRET=
|
||||
PUSHER_HOST=
|
||||
PUSHER_PORT=443
|
||||
PUSHER_SCHEME=https
|
||||
PUSHER_APP_CLUSTER=mt1
|
||||
|
||||
VITE_APP_NAME="${APP_NAME}"
|
||||
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
|
||||
VITE_PUSHER_HOST="${PUSHER_HOST}"
|
||||
VITE_PUSHER_PORT="${PUSHER_PORT}"
|
||||
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}"
|
||||
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
|
||||
|
||||
QUEUE_CONNECTION=rabbitmq
|
||||
RABBITMQ_HOST=rabbitmq
|
||||
RABBITMQ_PORT=5672
|
||||
RABBITMQ_VHOST=/libretime
|
||||
RABBITMQ_LOGIN=libretime
|
||||
RABBITMQ_PASSWORD=libretime
|
||||
|
||||
VITE_APP_TIMEZONE=UTC
|
1974
docker/sintonia-webapp/php/php-ini-production
Normal file
1974
docker/sintonia-webapp/php/php-ini-production
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue