Simple Magnetico web interface written in PHP and Symfony.
Find a file
Alexey Skobkin 23d8401bb2
All checks were successful
continuous-integration/drone/push Build is passing
Docker CI build (!12)
Reviewed-on: #12
2022-07-11 03:39:38 +03:00
bin Updating bin/console to Symfony Runtime version. 2022-07-05 23:41:37 +03:00
config Docker CI build (!12) 2022-07-11 03:39:38 +03:00
etc/nginx/sites-available Cleaning nginx config. 2019-12-29 02:59:42 +03:00
public composer update symfony/* to ^5.4. Updating index.php to 5.4, adding security deprecations (#26), some small refactoring. 2022-07-05 00:56:05 +03:00
src PHP code refresh (!8) 2022-07-10 16:51:26 +03:00
templates #12 File tree (bstreeview) implemented instead of file path list. A bit of refactoring. symfony/asset added and used in templates. symfony/flex upgraded due to bugfix. 2020-12-19 22:56:03 +03:00
translations Web profiler added. Pagerfanta bundle added. FrameworkExtraBundle added. 2018-06-21 02:28:31 +03:00
.dockerignore Docker CI build (!12) 2022-07-11 03:39:38 +03:00
.drone.yml Docker CI build (!12) 2022-07-11 03:39:38 +03:00
.env Docker CI build (!12) 2022-07-11 03:39:38 +03:00
.gitignore Removing WebServerBundle (deprecated). Downgrading symfony/* packages to 5.4 to avoid compatibility problems. 2022-07-06 22:48:02 +03:00
.rr.dev.yaml Adding RoadRunner support (#28). 2022-07-06 00:21:41 +03:00
.rr.yaml Some tweak tries to prevent memory leaks. 2022-07-08 05:24:28 +03:00
composer.json Removing WebServerBundle (deprecated). Downgrading symfony/* packages to 5.4 to avoid compatibility problems. 2022-07-06 22:48:02 +03:00
composer.lock Removing WebServerBundle (deprecated). Downgrading symfony/* packages to 5.4 to avoid compatibility problems. 2022-07-06 22:48:02 +03:00
Dockerfile Docker healthcheck (!10) 2022-07-10 23:22:42 +03:00
LICENSE README.md added. LICENSE added. composer.json updated for packagist publication. .env.dist updated with fixed database path. 2018-06-22 18:43:19 +03:00
README.md Docker CI build (!12) 2022-07-11 03:39:38 +03:00
symfony.lock Removing WebServerBundle (deprecated). Downgrading symfony/* packages to 5.4 to avoid compatibility problems. 2022-07-06 22:48:02 +03:00

Build Status License

Magnetico Web PHP

Magnetico Web is a simple web search interface for magneticod database.

Installation

Application setup is quite simple:

Getting the source code

Using Git

git clone https://skobkin@bitbucket.org/skobkin/magnetico-web.git
cd magnetico-web

Using Composer

composer create-project skobkin/magnetico-web -s dev
cd magnetico-web

Setting file access privileges

Set up appropriate write permissions for var/cache and var/logs.

Installing dependencies (not needed after installation via Composer)

# In developer environment:
composer install

# In production environment
# You should tell the app that it's running in the production environment.
# You can use environment variables or set it in the .env.local file like that:
echo 'APP_ENV=prod' > ./.env.local
composer install --no-dev --optimize-autoloader

After dependencies installation you may need to create .env.local file (see .env for reference) or set appropriate environment variables for production usage.

Check Symfony documentation for more details about .env files.

You can also check this post about .env changes in Symfony if you're updating from an old version of the project.

Database configuration

See Symfony database configuration documentation for more details.

You must set environment variables for both databases: magneticod's and magnetico-web's PostgreSQL.

Schema considerations

Make sure that magnetico-web and magneticod are using the same schema for storing torrents in the PostgreSQL database. Check magneticod docs here and make sure that schema parameter either not set or set to magneticod (default value).

magnetico-web uses magneticod schema to search for torrents so if you set magenticod to use another schema search will not work.

Database schema migration

# Only for 'default' EntityManager (Application entities)
php bin/console doc:mig:mig --em=default

Web assets installation

php bin/console assets:install public --symlink

User creation

# see --help for more info
# If you don't specify the password it'll be requested from you in the command line
php bin/console user:add <your_username> <your_email> [your_password] [--invites=10]

Giving invites to the user

# see --help for more info
php bin/console invite:add <username> <number-of-invites>

Enabling dev mode

echo 'APP_ENV=dev > .env.local'

Running using RoadRunner instead of PHP-FPM

# First time only:
./vendor/bin/rr get --location bin/

# Running the server:
./bin/rr serve

# Running the server in dev mode (watching enabled)
bin/rr serve -c .rr.dev.yaml

Read more here and here.

Trusted proxies

If you're running the app in RoadRunner and experiencing problems with proper URL generation (HTTP instead of HTTPS), check beginning of the section about running in Docker below.

Running in Docker

Docker Compose example:

When running in Docker DO NOT FORGET to use Nginx or other reverse-proxy server and properly set TRUSTED_PROXIES environment variable. You can read more about it here.

version: '3.7'

services:
    magnetico-web:
        image: skobkin/magnetico-web
        container_name: magnetico-web
        hostname: magnetico-web
        extra_hosts:
            - 'host.docker.internal:host-gateway'
        ports:
            - "127.0.0.1:${EXT_HTTP_PORT:-8080}:8080/tcp"
        restart: unless-stopped
        user: "$UID"
        volumes:
            - "${LOG_PATH:-./var/log}:/app/var/log"
        env_file: .env
        logging:
            driver: "json-file"
            options:
                max-size: "${LOG_MAX_SIZE:-5m}"
                max-file: "${LOG_MAX_FILE:-5}"

Use dotenv file to configure this stack:

# Example with some useful parameters
APP_SECRET=qwerty

APP_DATABASE_URL=postgres://magnetico-web:password@host.docker.internal:5432/magnetico-web?application_name=magnetico_web
MAGNETICOD_DATABASE_URL=postgres://magneticod:password@host.docker.internal:5432/magneticod?application_name=magnetico_web

REDIS_DSN=redis://host.docker.internal:6379/0

# BE CAREFUL WITH 'REMOTE_ADDR'. Use ONLY with trusted reverse-proxy
TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR

###> sentry/sentry-symfony ###
SENTRY_DSN=https://abcabcdaefdaef@sentry.io/123456
###< sentry/sentry-symfony ###

###> symfony/mailer ###
MAILER_DSN=smtp://mail@domain.tld:password@smtp.domain.tld:587
MAILER_FROM=no-reply@domain.tld
###< symfony/mailer ###

###> excelwebzone/recaptcha-bundle ###
EWZ_RECAPTCHA_SITE_KEY=key
EWZ_RECAPTCHA_SECRET=secret
###< excelwebzone/recaptcha-bundle ###