Stars: 116
Forks: 30
Pull Requests: 47
Issues: 115
Watchers: 18
Last Updated: 2023-04-19 20:43:09
LAN party management web application
License: GNU Affero General Public License v3.0
Languages: Shell, PHP, Vue, Blade, Dockerfile, CSS, JavaScript, SCSS
LANager is a web application designed to make LAN parties more enjoyable for attendees and organisers alike.
Clone the lanager-docker-compose project:
git clone https://github.com/zeropingheroes/lanager-docker-composeCopy .env.example to a new file named .env:
cd lanager-docker-compose
cp .env.example .envOpen the environment configuration file in a text editor:
nano .envSet the following configuration items:
APP_KEY to base64: followed by
a randomly generated 32 character base64 stringAPP_URL to the URL you will access LANager through, without a trailing slash,
e.g. https://example.comAPP_TIMEZONE to your
location's timezoneSTEAM_API_KEY to your Steam API KeyGOOGLE_API_KEY to your Google API Key with access to the Maps
embed APIDB_PASSWORD to a randomly generated passwordDB_ROOT_PASSWORD to a different randomly generated passwordBring up the application:
docker-compose up --detachCheck the application's status:
docker ps --filter name=lanagerWhen the container status shows Up x minutes (healthy), initialise the database:
./initialise-database.shLANager should now be accessible at http://localhost, or at the URL you specified in APP_URL, providing you've
created a corresponding DNS A record for the Docker host's IP address, and allowed ports 80 and 443 through
the Docker host's firewall.
docker-compose down --rmi local --volumes to delete the database data and LANager container image, and then
retry the setup steps above.env file and enable debugging:
APP_ENV=staging
APP_DEBUG=trueIf you get stuck, create an issue with the details of what you're experiencing:
docker-compose updocker logs lanagerTo set up the LANager for your next LAN party, you need to create a LAN page, then add Events (such as scheduled games or lunch breaks) and Guides (such as game rules) to that LAN page.
The LANager assigns the "Super Admin" role to the first account that logs into it, so make sure you log in as soon as you have completed installation.
Super Admins can perform any action on the site, including assigning roles to other users.
The first thing you need to do is to create a LAN page in the LANager. This process is the same whether your LAN party is one day or multiple days. You need to do this before you can create an event schedule, publish any guides or award achievements.
Log into the LANager, and go to ⚙ > LANs, then select the + button to go to the LAN page creation form. Enter your LAN's details, and add a description with Markdown formatting if you want to.
The LANager automatically adds anyone who logs into the LANager during the LAN party to the LAN's list of attendees. For each attendee it displays the current LAN page, which contains the LAN's timetabled events, guides and attendees list.
Once you have a LAN page for your LAN party, you can create Events and Guides to help attendees enjoy your party.
From the LAN page, click the + button next to the Events and Guides headings to go to their creation forms.
You can use markdown-formatted links in LANs, guides and events. For example, you can write a single guide, and insert a link to it on several event pages:
If you need any help, please contact one of our [tournament staff](/lans/4/guides/3)
Where possible, it's good practice to use relative links as demonstrated above, so that if you change your domain, the links continue to work.
You can upload images to LAN pages, Events and Guides. To do this, follow these steps:
The slides feature allows you to display a looping slideshow of live data and useful info for your attendees, such as which event is starting next, which games people are playing, and how to log into the LANager.
To display the slideshow, log in as an admin, and navigate to ⚙ > LANs > (your LAN) > Slides.
Load the slideshow on a big TV or projector so that attendees can see the info easily.
Click ⚙ > Achievements and then click the + button to create achievements that you can award to users.
To award an Achievement to an attendee, go to the navigation bar and select Achievements. This opens the list of Achievements you have awarded to attendees of the current LAN. At the bottom of the page, choose the Achievement and the attendee to award it to, then select Award.
Click ⚙ > Navigation to customise the links shown on the navigation bar. You can link to pages on the LANager or to third-party sites, organise the links into drop-down menus, and choose the order that the links appear in the navbar or dropdown.
Run ./backup.sh to back up LANager's configuration, database data and uploaded images.
Run ./backup-restore.sh <file> to restore a backup.
If you have an existing LANager installation that you would like to migrate to docker, follow the below steps.
Create a temporary directory
mkdir -p /tmp/lanager/imagesDump your existing MySQL data into a file:
sudo mysqldump -uroot --add-drop-database --databases lanager > /tmp/lanager/lanager.sqlStop MySQL, Nginx & PHP running on your server:
sudo systemctl stop mysql nginx php7.2-fpm
sudo systemctl start mysql nginx php7.2-fpmCopy your existing uploaded images into the temporary directory:
cp /var/www/lanager/storage/app/public/images/* /tmp/lanager/imagesBack up your existing .env file:
cp .env .env.originalUpdate your existing .env file:
nano .envAPP_ENV=staging
DB_DATABASE=lanager
DB_HOST=db
DB_ROOT_PASSWORD= (generate a root password)
LOG_CHANNEL=stdout
APP_LOCALE=en
Bring the containers up:
docker-compose up --detachLoad the environment file containing the database details into the current shell
source .envRestore the database data dump into the db container using a temporary mysql image:
docker run -i -e "MYSQL_PWD=$DB_ROOT_PASSWORD" --network lanager-docker-compose_lanager-network --rm mysql:8 \
mysql "-h$DB_HOST" -uroot "$DB_DATABASE" < /tmp/lanager/lanager.sqlRestore the uploaded images into the Laravel storage volume:
docker run --rm --volumes-from lanager -v /tmp/lanager/:/restore php:7.4-fpm cp /restore/images/* \
/var/www/lanager/storage/public/images/Open your browser and test, and if all is well, uninstall MySQL, PHP and NGINX:
sudo apt remove mysql nginx php7.2Remove the temporary directory:
rm -rf /tmp/lanagerFollow the steps from the Setup section above
Stop the running containers
docker-compose downCheck out the development branch of lanager-docker-compose
cd lanager-docker-compose
git checkout developEdit lanager-docker-compose/.env and add the following lines:
APP_ENV=local
APP_DEBUG=trueIn a directory outside of lanager-docker-compose, clone the lanager repository:
git clone --branch develop https://github.com/zeropingheroes/lanagerInstall composer on your host computer
From the lanager directory, install composer dependencies:
composer install --no-scriptsSet an environment variable with the path to where you cloned the lanager repository (without a trailing slash)
export PATH_TO_LANAGER=/path/to/lanager
export PATH_TO_LANAGER_STORAGE=/path/to/lanager/storageFrom the lanager-docker-compose directory, run envsubst to substitute in the path to lanager into
docker-compose.override.yml:
envsubst < docker-compose.override.yml.example > docker-compose.override.ymlStart the containers
docker-compose up --detachAfter a minute or so, visit http://localhost
The container will run the code from your host computer, rather than the static copy of the code in the container's
image, so any changes you make to the files in the project directory (except for the storage/ directory)
will be seen by the running containers.
To stop the development environment run docker-compose stop.
When you're ready to start developing again run docker-compose start.
To destroy the development environment and all volumes that store lanager data, run:
docker-compose down --volumesFollow the setup steps above to get a fresh development environment.
To automatically check for and fix problems with your code before you commit:
lanager/ directory, run pre-commit installTo check your code, run pre-commit run --all-files or attempt to run git commit
To recompile JavaScript & CSS assets, from the lanager directory, run:
docker run -it --rm -v "$PWD":/var/www/html -w /var/www/html node:14-alpine npm installdocker run -it --rm -v "$PWD":/var/www/html -w /var/www/html node:14-alpine npm run devTo recompile whenever changes to files are detected, run:
docker run -it --rm -v "$PWD":/var/www/html -w /var/www/html node:14-alpine npm run watch-pollTo recompile minified versions suitable for committing, run:
docker run -it --rm -v "$PWD":/var/www/html -w /var/www/html node:14-alpine npm run prodBefore submitting pull requests, please run the functional test suite to check your changes don't break existing functionality.
Run docker exec -it lanager php artisan dusk to run LANager's browser test suite.
If you want to support the project in a non-technical way, we'd love it if you donated to us:
Enjoy using the LANager!