Compare commits

..

No commits in common. "main" and "dev" have entirely different histories.
main ... dev

10 changed files with 76 additions and 4067 deletions

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-fpm AS sintonia-webapp-base FROM php:8.2-cli 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,15 +308,14 @@ RUN set -eux && \
libpng-dev \ libpng-dev \
git \ git \
libonig-dev \ libonig-dev \
libpq-dev && \ libpq-dev
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 sockets docker-php-ext-install pdo_pgsql pgsql && \
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 && \
@ -346,7 +345,6 @@ 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
@ -366,45 +364,36 @@ 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
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 php artisan ziggy:generate && mv ziggy.js resources/utils/ziggy.js
#RUN cp $HOME/.env ./ #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 git config --global --add safe.directory /var/www/sintonia_webapp && \
/home/$sintonia_user/composer install --no-progress --no-interaction --no-autoloader && \ /home/$sintonia_user/composer install --no-progress --no-interaction --no-dev --no-autoloader && \
/home/$sintonia_user/composer --no-cache dump-autoload --no-interaction && \ /home/$sintonia_user/composer --no-cache dump-autoload --no-interaction --no-dev && \
php artisan migrate && \
php artisan key:generate && \ php artisan key:generate && \
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
COPY ./docker/sintonia-webapp/php/php-ini-production /usr/local/etc/php/php.ini
RUN git clone https://git.congegni.net/sintonia_webapp && \ RUN git clone https://git.congegni.net/sintonia_webapp && \
cd sintonia_webapp && \ cd sintonia_webapp && \
php artisan ziggy:generate && \ php artisan ziggy:generate && \

View File

@ -1,38 +1,72 @@
# Sintonia # [![LibreTime](https://github.com/libretime/website/blob/main/static/img/logo-512px.png)](https://github.com/libretime/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. [![Financial Contributors on Open Collective](https://opencollective.com/libretime/all/badge.svg?label=financial+contributors)](https://opencollective.com/libretime)
The application will therefore need to allow for:
- Managing multiple users with three different types of permissions (administrator, editor, and DJ); LibreTime makes it easy to run your own online or terrestrial radio station. It
- Managing the audio file archive (adding, deleting), allowing uploads from remote sources such as individual audio files on other servers or RSS feeds; is a community managed fork of the AirTime project.
- 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;
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. It is managed by a friendly inclusive community of stations from around the
This will be complemented by a new web application (hereafter referred to as "Sintonia") to replace the original application (hereafter referred to as "Legacy"). globe that use, document and improve LibreTime. Join us in fixing bugs and in
defining how we manage the codebase going forward.
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. Check out the [documentation](https://libretime.org/docs/) for more information and
start broadcasting!
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.
You can find details about our development process in the
[contributing](./CONTRIBUTING.md) guide.
## Support ## Support
Coming soon 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.
## Contributors ## Contributors
### Code Contributors ### Code Contributors
Sintonia is being developed by [Congegni](https://congegni.net) This project exists thanks to all the people who [contribute](CONTRIBUTING.md).
### Financial Contributors ### Financial Contributors
![logo Arci Firenze](https://www.arcifirenze.it/wp-content/uploads/logo-arci-firenze.png) [Arci Firenze Aps](https://www.arcifirenze.it/) 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>
## License ## License
Coming soon 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.
## Copyright ## Copyright
Coming soon Copyright (c) 2011-2017 Sourcefabric z.ú.
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://127.0.0.1:8080 public_url: http://localhost: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://127.0.0.1:8001/main public_url: https://localhost: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://127.0.0.1:8443/main.ogg public_url: https://localhost: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://127.0.0.1:8443/main.opus public_url: https://localhost: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://127.0.0.1:8443/main.mp3 public_url: https://localhost:8443/main.mp3
audio: audio:
format: mp3 format: mp3
bitrate: 256 bitrate: 256

View File

@ -11,8 +11,6 @@ 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
@ -30,11 +28,11 @@ DB_DATABASE=libretime
DB_USERNAME=libretime DB_USERNAME=libretime
DB_PASSWORD=libretime DB_PASSWORD=libretime
SESSION_DRIVER=cookie SESSION_DRIVER=database
SESSION_LIFETIME=120 SESSION_LIFETIME=120
SESSION_ENCRYPT=false SESSION_ENCRYPT=false
SESSION_PATH=/ SESSION_PATH=/
SESSION_DOMAIN=127.0.0.1 SESSION_DOMAIN=null
BROADCAST_CONNECTION=log BROADCAST_CONNECTION=log
FILESYSTEM_DISK=local FILESYSTEM_DISK=local

File diff suppressed because it is too large Load Diff

View File

@ -78,20 +78,16 @@ services:
working_dir: /var/www/sintonia_webapp working_dir: /var/www/sintonia_webapp
volumes: volumes:
- ./sintonia_webapp:/var/www/sintonia_webapp - ./sintonia_webapp:/var/www/sintonia_webapp
- libretime_storage:/srv/libretime
ports: ports:
- 9000:9000 - ${SINTONIA_LARAVEL_PORT}:${SINTONIA_LARAVEL_PORT}
# - ${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
nginx: nginx:
volumes: volumes:
- ./legacy:/var/www/html - ./legacy:/var/www/html
- ./sintonia_webapp:/var/www/sintonia_webapp
icecast: icecast:
ports: ports:

View File

@ -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:9876 LIBRETIME_GENERAL_PUBLIC_URL: http://nginx:8080
worker: worker:
image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest} image: ghcr.io/libretime/libretime-worker:${LIBRETIME_VERSION:-latest}
@ -119,24 +119,17 @@ 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
- 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
@ -152,4 +145,3 @@ volumes:
libretime_storage: {} libretime_storage: {}
libretime_assets: {} libretime_assets: {}
libretime_playout: {} libretime_playout: {}
sintonia_assets: {}

View File

@ -1,54 +0,0 @@
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;
location / {
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 sitonia;
include fastcgi_params;
}
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;
}
}

File diff suppressed because it is too large Load Diff