Compare commits

..

69 commits
dev ... main

Author SHA1 Message Date
c7dad66bfc feat(docker): prod, dev .env files 2025-06-25 17:36:58 +02:00
53dbbb8956 feat(docker): prod, fix misc 2025-06-12 14:21:51 +02:00
f319be259d feat(docker): prod, fix misc 2025-06-12 14:17:05 +02:00
7f99c47327 feat(docker): prod, fix misc 2025-06-12 14:12:33 +02:00
ba00714ce7 feat(docker): prod, fix misc 2025-06-12 14:11:55 +02:00
95200b8d94 feat(docker): prod, fix misc 2025-06-12 11:46:40 +02:00
9b901810d7 feat(docker): prod, fix misc 2025-06-12 11:12:42 +02:00
b0a7ff757a feat(docker): prod, fix misc 2025-06-10 13:36:10 +02:00
bff6c0e339 feat(docker): prod, fix misc 2025-06-05 15:14:05 +02:00
36c3bf60a0 feat(docker): prod, fix misc 2025-06-05 15:08:51 +02:00
f722d770f3 feat(docker): prod, fix misc 2025-06-05 14:59:02 +02:00
d8d293ea7c feat(docker): prod, fix misc 2025-06-05 14:01:12 +02:00
734f4b90db feat(docker): prod, fix misc 2025-06-05 12:08:15 +02:00
4ba0f9ace7 feat(docker): prod, fix misc 2025-06-05 11:30:48 +02:00
cfbf1bca84 feat(docker): prod, fix misc 2025-06-05 11:19:29 +02:00
fb9448ef71 feat(docker): prod, fix misc 2025-06-05 11:15:47 +02:00
44a1411f8f feat(docker): prod, fix misc 2025-06-05 11:13:30 +02:00
457d456e5d feat(docker): prod, fix misc 2025-06-05 11:12:35 +02:00
c87a58fcd9 feat(docker): prod, fix misc 2025-06-05 11:11:28 +02:00
29cdea20c6 feat(docker): prod, fix misc 2025-06-05 11:10:57 +02:00
c927dbfb2a feat(docker): prod, fix misc 2025-06-05 11:09:10 +02:00
737c957802 feat(docker): prod, fix misc 2025-06-04 17:00:50 +02:00
07bd63aabd feat(docker): prod, fix misc 2025-06-04 16:57:34 +02:00
807e596637 feat(docker): prod, fix misc 2025-06-04 16:37:16 +02:00
b8fd7f8995 feat(docker): prod, fix misc 2025-06-04 16:34:05 +02:00
c6549500bc feat(docker): prod, fix misc 2025-06-04 16:33:34 +02:00
931e166c80 feat(docker): prod, fix misc 2025-06-04 16:23:58 +02:00
185ffe6e33 feat(docker): prod, fix misc 2025-06-04 16:07:54 +02:00
4b12f63f2c feat(docker): prod, fix misc 2025-05-22 14:41:35 +02:00
0136998304 feat(nginx): host conf file 2025-05-22 14:40:52 +02:00
e5ef7b7004 fix(dockerfile): cron 2025-04-23 16:14:01 +02:00
8a5331f2c5 fix(dockerfile): sintonia laravel migrate 2025-04-18 11:09:00 +02:00
4ce7c9f85e fix(nginx): sintonia conf 2025-04-18 11:08:06 +02:00
7049dfa80e Merge remote-tracking branch 'origin/main'
# Conflicts:
#	README.md
2025-04-03 18:36:08 +02:00
98c2bb7130 fix(docker): restart always 2025-04-03 18:34:30 +02:00
2e4be6c9b9 Update README.md 2025-04-03 17:51:43 +02:00
1ae38232a1 Update README.md 2025-04-03 17:37:15 +02:00
7f79c78c23 Update README.md 2025-04-03 17:14:56 +02:00
88f1732bdc fixing readme local url 2025-04-03 15:52:12 +02:00
3768bb6fe3 fixing readme 2025-04-03 15:51:10 +02:00
a920273f67 Update README.md 2025-04-02 13:04:09 +02:00
db1ac237c9 Update README.md 2025-04-02 13:02:34 +02:00
f2c2e5a8e0 Update README.md 2025-04-02 12:57:16 +02:00
512bc25f06 feat(readme): add docker images and container stats 2025-04-02 12:52:18 +02:00
c0039d7c47 add: gitsubmodules branch dev and merge strategy 2025-04-02 11:48:03 +02:00
cd65f6ab22 feat(readme): add docker install instructions 2025-03-31 15:34:48 +02:00
4431a346a6 feat(.env.dev): added missing nginx confi var 2025-03-31 15:28:28 +02:00
4494485f11 Merge remote-tracking branch 'origin/main' 2025-03-31 15:27:29 +02:00
7ea3705e34 fix(nginx): typo 2025-03-31 15:27:22 +02:00
9671fd0ee7 Update README.md 2025-03-18 10:31:33 +01:00
e8f30c292e Update README.md 2025-03-18 10:30:38 +01:00
d9aed7e2a3 Merge remote-tracking branch 'origin/main' 2025-03-10 15:33:32 +01:00
31d152831f fix(nginx): client body size and timeout 2025-03-10 15:33:21 +01:00
a60b06c1be Update README.md 2025-02-17 11:33:05 +01:00
6aef2b0aaf Merge remote-tracking branch 'origin/main' 2025-02-13 13:48:29 +01:00
75c9367c2e feat: added template nginx conf for sintonia_webapp 2025-02-13 13:47:54 +01:00
5b33dc0a90 feat(docker-compose.override): sintonia_webapp added volume for storage, exposed php-fpm ports, set env var for xdebug 2025-02-13 12:53:29 +01:00
6745416d94 feat(docker-compose): added volume for sintonia_webapp assets, nginx opened ports for sintonia_webapp, changed general public url for analyzer 2025-02-13 12:51:49 +01:00
d7574e2ada feat(docker): add php-fpm and relative log files 2025-02-13 12:50:01 +01:00
6218f1e34a Update README.md 2025-02-13 12:46:15 +01:00
82f4b18763 Update README.md 2025-02-13 12:45:39 +01:00
703b69c4a8 feat(dockerfile): seeds db in dev with user permissions 2025-02-11 16:32:47 +01:00
0ada5cf38f feat(docker): php sockets 2025-02-07 16:13:01 +01:00
d72fb3fe6b fix: changed localhost to 127.0.0.1 2025-02-07 16:12:22 +01:00
8d94b43d76 feat: added php.ini for dev and prod in dockerfile 2025-02-07 13:39:36 +01:00
d2fc5b0efa fix(docker): added laravel migration in container 2025-02-06 18:26:27 +01:00
d48200af4e feat(xdebug): added support for xdebug in container 2025-02-06 18:22:48 +01:00
92631dc015 feat(laravel env dev): added telescope and hash verify 2025-02-06 14:00:21 +01:00
013659e034 feat(docker): added xdebug support, run laravel job once 2025-02-06 13:59:44 +01:00
15 changed files with 4328 additions and 136 deletions

View file

@ -10,3 +10,4 @@ SINTONIA_USER=sintonia
SINTONIA_UID=1000 SINTONIA_UID=1000
SINTONIA_NODE_VERSION=22.13.0 SINTONIA_NODE_VERSION=22.13.0
SINTONIA_CONFIG_FILEPATH=./dev/sintonia-webapp/laravel/.env.dev.example SINTONIA_CONFIG_FILEPATH=./dev/sintonia-webapp/laravel/.env.dev.example
SINTONIA_NGINX_CONFIG_FILEPATH=./docker/nginx-sintonia.conf.template

3
.gitignore vendored
View file

@ -157,3 +157,6 @@ dmypy.json
# Cython debug symbols # Cython debug symbols
cython_debug/ cython_debug/
# sintonia
docker/sintonia-webapp/laravel/.env.production

2
.gitmodules vendored
View file

@ -1,3 +1,5 @@
[submodule "sintonia_webapp"] [submodule "sintonia_webapp"]
path = sintonia_webapp path = sintonia_webapp
url = ssh://gitea@git.congegni.net:4022/Congegni/sintonia_webapp.git url = ssh://gitea@git.congegni.net:4022/Congegni/sintonia_webapp.git
branch = dev
update = merge

View file

@ -284,7 +284,7 @@ ENV LIBRETIME_VERSION=$LIBRETIME_VERSION
#======================================================================================# #======================================================================================#
# Use PHP as the base # 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 # Arguments defined in docker-compose-dev.yml
ARG sintonia_user=$SINTONIA_USER ARG sintonia_user=$SINTONIA_USER
@ -308,21 +308,27 @@ RUN set -eux && \
libpng-dev \ libpng-dev \
git \ git \
libonig-dev \ libonig-dev \
libpq-dev libpq-dev \
cron && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN docker-php-ext-configure zip && \ RUN docker-php-ext-configure zip && \
docker-php-ext-configure gd --with-freetype --with-jpeg docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-install gd exif pcntl bcmath mysqli pdo_mysql mbstring && \ RUN docker-php-ext-install gd exif pcntl bcmath mysqli pdo_mysql mbstring && \
docker-php-ext-install pdo_pgsql pgsql && \ docker-php-ext-install pdo_pgsql pgsql sockets
apt-get clean && rm -rf /var/lib/apt/lists/*
# Create system user to run Composer and Artisan Commands # 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 && \ RUN set -eux && useradd -G www-data -u $sintonia_uid -d /home/$sintonia_user $sintonia_user && \
mkdir -p /home/$sintonia_user/.composer && \ 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 /home/$sintonia_user && \
chown -R $sintonia_user:$sintonia_user /var/www/sintonia_webapp 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" USER "$sintonia_user"
WORKDIR /home/$sintonia_user WORKDIR /home/$sintonia_user
@ -345,6 +351,7 @@ ARG libretime_config_filepath=$LIBRETIME_CONFIG_FILEPATH
USER root USER root
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install yq -y 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" USER "$sintonia_user"
WORKDIR $HOME WORKDIR $HOME
@ -364,45 +371,68 @@ ENV sintonia_laravel_port=${sintonia_laravel_port}
ENV sintonia_vite_port=${sintonia_vite_port} ENV sintonia_vite_port=${sintonia_vite_port}
USER root 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 USER $sintonia_user
WORKDIR /var/www/sintonia_webapp 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} ENV sintonia_user=${sintonia_user}
### Start server ### Start server
CMD git config --global --add safe.directory /var/www/sintonia_webapp && \ CMD cron && \
/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 && \ 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 && \ set -eux && \
npm i && \ npm i && \
php-fpm -D && \
npx vite --port $sintonia_vite_port --host & \ npx vite --port $sintonia_vite_port --host & \
php artisan serve --host=0.0.0.0 --port=$sintonia_laravel_port & \
sleep infinity sleep infinity
FROM sintonia-webapp-build-common AS sintonia-webapp-production FROM sintonia-webapp-build-common AS sintonia-webapp-production
RUN git clone https://git.congegni.net/sintonia_webapp && \ USER root
cd sintonia_webapp && \
php artisan ziggy:generate && \ 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 && \ php artisan key:generate && \
mv ziggy.js resources/utils/ziggy.js && \ php artisan migrate && \
npx vite build && \ php artisan db:seed && \
cp -r dist/build/* /var/www/html/ && \ php artisan schedule:run >> /dev/null 2>&1 && \
rm -rf /var/www/sintonia_webapp/node_modules /var/www/sintonia_webapp/.npm /var/www/sintonia_webapp/.composer /var/www/sintonia_webapp/.git && \ cron && \
rm -rf /home/$sintonia_user/node* /home/$sintonia_user/composer php-fpm -F

160
README.md
View file

@ -1,72 +1,134 @@
# [![LibreTime](https://github.com/libretime/website/blob/main/static/img/logo-512px.png)](https://github.com/libretime/libretime) # Sintonia
[![Financial Contributors on Open Collective](https://opencollective.com/libretime/all/badge.svg?label=financial+contributors)](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 Link to [sintonia_webapp repo](https://git.congegni.net/Congegni/sintonia_webapp).
is a community managed fork of the AirTime project.
It is managed by a friendly inclusive community of stations from around the The application will therefore need to allow for:
globe that use, document and improve LibreTime. Join us in fixing bugs and in
defining how we manage the codebase going forward.
Check out the [documentation](https://libretime.org/docs/) for more information and - Managing multiple users with three different types of permissions (administrator, editor, and DJ);
start broadcasting! - 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 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.
of Conduct](https://github.com/libretime/organization/blob/main/CODE_OF_CONDUCT.md). This will be complemented by a new web application (hereafter referred to as "Sintonia") to replace the original application (hereafter referred to as "Legacy").
By participating in this project you agree to abide by its terms.
You can find details about our development process in the 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.
[contributing](./CONTRIBUTING.md) guide.
## 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 ## Support
To get support for any questions or problems you might have using the software Coming soon
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.
## Contributors ## Contributors
### Code 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 ### Financial Contributors
Become a financial contributor and help us sustain our community on ![logo Arci Firenze](https://www.arcifirenze.it/wp-content/uploads/logo-arci-firenze.png) [Arci Firenze Aps](https://www.arcifirenze.it/)
[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>
## License ## License
LibreTime is free software: you can redistribute it and/or Coming soon
modify it under the terms of the GNU Affero General Public
License as published by the Free Software Foundation,
version 3 of the License.
## Copyright ## Copyright
Copyright (c) 2011-2017 Sourcefabric z.ú. Coming soon
Copyright (c) 2017-2023 LibreTime Community
Please refer to the [LEGACY](./LEGACY.md) file for more information.

View file

@ -1,5 +1,5 @@
general: general:
public_url: http://localhost:8080 public_url: http://127.0.0.1:8080
api_key: some_secret_api_key api_key: some_secret_api_key
secret_key: some_secret_key secret_key: some_secret_key
@ -25,7 +25,7 @@ liquidsoap:
stream: stream:
inputs: inputs:
main: main:
public_url: https://localhost:8001/main public_url: https://127.0.0.1:8001/main
mount: main mount: main
port: 8001 port: 8001
secure: true secure: true
@ -45,7 +45,7 @@ stream:
- <<: *default_icecast_output - <<: *default_icecast_output
enabled: true enabled: true
mount: main.ogg mount: main.ogg
public_url: https://localhost:8443/main.ogg public_url: https://127.0.0.1:8443/main.ogg
audio: audio:
format: ogg format: ogg
bitrate: 256 bitrate: 256
@ -53,7 +53,7 @@ stream:
- <<: *default_icecast_output - <<: *default_icecast_output
enabled: true enabled: true
mount: main.opus mount: main.opus
public_url: https://localhost:8443/main.opus public_url: https://127.0.0.1:8443/main.opus
audio: audio:
format: opus format: opus
bitrate: 256 bitrate: 256
@ -61,7 +61,7 @@ stream:
- <<: *default_icecast_output - <<: *default_icecast_output
enabled: true enabled: true
mount: main.mp3 mount: main.mp3
public_url: https://localhost:8443/main.mp3 public_url: https://127.0.0.1:8443/main.mp3
audio: audio:
format: mp3 format: mp3
bitrate: 256 bitrate: 256

View file

@ -1,9 +1,10 @@
APP_NAME=Sintonia APP_NAME=Sintonia
APP_ENV=local APP_ENV=local
APP_KEY=base64:vxFbOz6qPvNW2RpEFw/XOWdZ9+X5oXwqnUgjHETJHQM= APP_KEY=
APP_DEBUG=true APP_DEBUG=true
APP_TIMEZONE=UTC 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_LOCALE=en
APP_FALLBACK_LOCALE=en APP_FALLBACK_LOCALE=en
@ -11,7 +12,8 @@ APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_DRIVER=file APP_MAINTENANCE_DRIVER=file
# APP_MAINTENANCE_STORE=database # APP_MAINTENANCE_STORE=database
HASH_VERIFY=false
TELESCOPE_ENABLED=true
PHP_CLI_SERVER_WORKERS=4 PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12 BCRYPT_ROUNDS=12
@ -28,15 +30,14 @@ DB_DATABASE=libretime
DB_USERNAME=libretime DB_USERNAME=libretime
DB_PASSWORD=libretime DB_PASSWORD=libretime
SESSION_DRIVER=database SESSION_DRIVER=cookie
SESSION_LIFETIME=120 SESSION_LIFETIME=120
SESSION_ENCRYPT=false SESSION_ENCRYPT=false
SESSION_PATH=/ SESSION_PATH=/
SESSION_DOMAIN=null SESSION_DOMAIN=127.0.0.1
BROADCAST_CONNECTION=log BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local FILESYSTEM_DISK=local
QUEUE_CONNECTION=database
CACHE_STORE=database CACHE_STORE=database
CACHE_PREFIX= CACHE_PREFIX=
@ -64,3 +65,12 @@ AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false AWS_USE_PATH_STYLE_ENDPOINT=false
VITE_APP_NAME="${APP_NAME}" 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

File diff suppressed because it is too large Load diff

View file

@ -77,17 +77,23 @@ services:
container_name: sintonia-webapp-dev container_name: sintonia-webapp-dev
working_dir: /var/www/sintonia_webapp working_dir: /var/www/sintonia_webapp
volumes: volumes:
- ./dev/sintonia-webapp/laravel/.env.dev:/var/www/sintonia_webapp/.env
- ./sintonia_webapp:/var/www/sintonia_webapp - ./sintonia_webapp:/var/www/sintonia_webapp
- libretime_storage:/srv/libretime
ports: ports:
- ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT} - 9000:9000
# - ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT}
- ${SINTONIA_VITE_PORT}:${SINTONIA_VITE_PORT} - ${SINTONIA_VITE_PORT}:${SINTONIA_VITE_PORT}
environment: environment:
- sintonia_laravel_port=${SINTONIA_LARAVEL_PORT} - sintonia_laravel_port=${SINTONIA_LARAVEL_PORT}
- sintonia_vite_port=${SINTONIA_VITE_PORT} - sintonia_vite_port=${SINTONIA_VITE_PORT}
- PHP_IDE_CONFIG=serverName=sintonia
restart: always
nginx: nginx:
volumes: volumes:
- ./legacy:/var/www/html - ./legacy:/var/www/html
- ./sintonia_webapp:/var/www/sintonia_webapp
icecast: icecast:
ports: ports:

View file

@ -29,7 +29,7 @@ services:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro - ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_playout:/app - libretime_playout:/app
environment: environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080 LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
liquidsoap: liquidsoap:
image: ghcr.io/libretime/libretime-playout:${LIBRETIME_VERSION:-latest} 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_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_playout:/app - libretime_playout:/app
environment: environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080 LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
analyzer: analyzer:
image: ghcr.io/libretime/libretime-analyzer:${LIBRETIME_VERSION:-latest} 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_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_storage:/srv/libretime - libretime_storage:/srv/libretime
environment: environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080 LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
worker: worker:
image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest} image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest}
@ -71,7 +71,7 @@ services:
volumes: volumes:
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro - ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
environment: environment:
LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080 LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:9876
api: api:
image: ghcr.io/libretime/libretime-api:${LIBRETIME_VERSION:-latest} image: ghcr.io/libretime/libretime-api:${LIBRETIME_VERSION:-latest}
@ -100,7 +100,6 @@ services:
sintonia-webapp: sintonia-webapp:
build: build:
context: ./sintonia_webapp
target: sintonia-webapp-production target: sintonia-webapp-production
args: args:
- sintonia_user=${SINTONIA_USER} - sintonia_user=${SINTONIA_USER}
@ -108,28 +107,35 @@ services:
- sintonia_node_version=${SINTONIA_NODE_VERSION} - sintonia_node_version=${SINTONIA_NODE_VERSION}
- sintonia_config_filepath=${SINTONIA_CONFIG_FILEPATH} - sintonia_config_filepath=${SINTONIA_CONFIG_FILEPATH}
- libretime_config_filepath=${LIBRETIME_CONFIG_FILEPATH} - libretime_config_filepath=${LIBRETIME_CONFIG_FILEPATH}
image: sintonia-webapp-prod container_name: sintonia-webapp-production
container_name: sintonia-webapp-prod
depends_on: depends_on:
- postgres - postgres
- rabbitmq - rabbitmq
init: true init: true
working_dir: /var/www/sintonia_webapp working_dir: /var/www/sintonia_webapp
volumes: volumes:
- ./docker/sintonia-webapp/laravel/.env.production:/var/www/sintonia_webapp/.env
- ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro - ${LIBRETIME_CONFIG_FILEPATH:-./config.yml}:/etc/libretime/config.yml:ro
- libretime_storage:/srv/libretime - libretime_storage:/srv/libretime
- libretime_assets:/var/www/html - libretime_assets:/var/www/html
- sintonia_assets:/var/www/sintonia_webapp
nginx: nginx:
image: nginx image: nginx
ports: ports:
- 8080:8080 - 8080:8080
- ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT}
depends_on: depends_on:
- legacy - legacy
- sintonia-webapp
environment:
- SINTONIA_LARAVEL_PORT=${SINTONIA_LARAVEL_PORT}
volumes: volumes:
- libretime_assets:/var/www/html:ro - libretime_assets:/var/www/html:ro
- libretime_storage:/srv/libretime: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 - ${NGINX_CONFIG_FILEPATH:-./nginx.conf}:/etc/nginx/conf.d/default.conf:ro
- sintonia_assets:/var/www/sintonia_webapp
icecast: icecast:
image: ghcr.io/libretime/icecast:2.4.4 image: ghcr.io/libretime/icecast:2.4.4
@ -145,3 +151,5 @@ volumes:
libretime_storage: {} libretime_storage: {}
libretime_assets: {} libretime_assets: {}
libretime_playout: {} libretime_playout: {}
sintonia_assets: {}

41
docker/nginx-host.conf Normal file
View 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;
}
}

View 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;
}
}

View file

@ -1,39 +1,60 @@
APP_NAME=Laravel APP_NAME=Sintonia
APP_ENV=local APP_ENV=local
APP_KEY= APP_KEY=
APP_DEBUG=true APP_DEBUG=false
APP_URL=http://localhost 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_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug LOG_LEVEL=debug
DB_CONNECTION=mysql DB_CONNECTION=pgsql
DB_HOST=127.0.0.1 DB_HOST=postgres
DB_PORT=3306 DB_PORT=5432
DB_DATABASE=laravel DB_DATABASE=libretime
DB_USERNAME=root DB_USERNAME=libretime
DB_PASSWORD= DB_PASSWORD=libretime
BROADCAST_DRIVER=log SESSION_DRIVER=cookie
CACHE_DRIVER=file
FILESYSTEM_DISK=local
QUEUE_CONNECTION=sync
SESSION_DRIVER=file
SESSION_LIFETIME=120 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 MEMCACHED_HOST=127.0.0.1
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1 REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null REDIS_PASSWORD=null
REDIS_PORT=6379 REDIS_PORT=6379
MAIL_MAILER=smtp MAIL_MAILER=log
MAIL_HOST=mailpit MAIL_SCHEME=null
MAIL_PORT=1025 MAIL_HOST=127.0.0.1
MAIL_PORT=2525
MAIL_USERNAME=null MAIL_USERNAME=null
MAIL_PASSWORD=null MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="hello@example.com" MAIL_FROM_ADDRESS="hello@example.com"
MAIL_FROM_NAME="${APP_NAME}" MAIL_FROM_NAME="${APP_NAME}"
@ -43,17 +64,13 @@ AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET= AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false 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_APP_NAME="${APP_NAME}"
VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
VITE_PUSHER_HOST="${PUSHER_HOST}" QUEUE_CONNECTION=rabbitmq
VITE_PUSHER_PORT="${PUSHER_PORT}" RABBITMQ_HOST=rabbitmq
VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" RABBITMQ_PORT=5672
VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" RABBITMQ_VHOST=/libretime
RABBITMQ_LOGIN=libretime
RABBITMQ_PASSWORD=libretime
VITE_APP_TIMEZONE=UTC

File diff suppressed because it is too large Load diff