LANager
LANager is a web application designed to make LAN parties more enjoyable for attendees and organisers alike.
Features
Encourage socialising & participation
- Games being played - by your LAN's attendees, updated every minute from Steam
- Events timetable - so your attendees know what's on at the LAN
- Achievements - created by you and awarded to attendees
- Attendee profiles - with a link to their Steam profile, and their gameplay history at the LAN
- Games in common - when viewing another attendee's profile
- Games recently played - showing the top games most recently played by attendees at the LAN
Broadcast useful information
- Slides - showing games attendees are currently playing, and current and upcoming events, for TVs or projectors around your venue
- Guides - written by you, to help attendees learn about things like venue facilities, rules, or gameplay guides
- Links - to other websites, such as your organisation's website, or a game statistics page
Requirements
- Internet access
- Docker Engine
- Docker Compose
Setup
-
Clone the
lanager-docker-compose
project:git clone https://github.com/zeropingheroes/lanager-docker-compose
-
Copy
.env.example
to a new file named.env
:cd lanager-docker-compose cp .env.example .env
-
Open the environment configuration file in a text editor:
nano .env
-
Set the following configuration items:
- Set
APP_KEY
tobase64:
followed by a randomly generated 32 character base64 string - Set
APP_URL
to the URL you will access LANager through, without a trailing slash, e.g.https://example.com
- Set
APP_TIMEZONE
to your location's timezone - Set
STEAM_API_KEY
to your Steam API Key - Set
GOOGLE_API_KEY
to your Google API Key with access to the Maps embed API - Set
DB_PASSWORD
to a randomly generated password - Set
DB_ROOT_PASSWORD
to a different randomly generated password
- Set
-
Bring up the application:
docker-compose up --detach
-
Check the application's status:
docker ps --filter name=lanager
-
When the container status shows
Up x minutes (healthy)
, initialise the database:./initialise-database.sh
LANager 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.
Troubleshooting
- Run
docker-compose down --rmi local --volumes
to delete the database data and LANager container image, and then retry the setup steps above - Edit your
.env
file and enable debugging:Important: Remove these lines after troubleshooting to avoid leaking sensitive dataAPP_ENV=staging APP_DEBUG=true
If you get stuck, create an issue with the details of what you're experiencing:
- The commands you've run
- The output of
docker-compose up
- The output of
docker logs lanager
- Any errors displayed in your browser
Getting started
To 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.
Become a Super Admin
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.
Create your LAN page
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
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.
Create Events & Guides
Once you have a LAN page for your LAN party, you can create Events and Guides to help attendees enjoy your party.
- Events are a useful way to timetable game tournaments, highlight big game sessions, schedule breaks and mealtimes, and let people know when it's time to go home
- Guides are a useful way to provide people with the rules and download links to the games you're playing, to let them know where the nearest shops and restaurants are, to provide a code of conduct for your event, and to communicate any other information you think your guests might need.
From the LAN page, click the + button next to the Events and Guides headings to go to their creation forms.
Using links
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.
Using images
You can upload images to LAN pages, Events and Guides. To do this, follow these steps:
- Below the "description" text box, select "upload images".
- Upload the image you want to use.
- Next to the image, select âš™ > Copy Markdown
- Paste the markdown into the guide, event or LAN's description field, in the location you want it to appear in the text.
Display slides
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
Load the slideshow on a big TV or projector so that attendees can see the info easily.
Create and award Achievements
Click
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.
Customise the navigation bar
Click
Backup
Run ./backup.sh
to back up LANager's configuration, database data and uploaded images.
Restore a backup
Run ./backup-restore.sh <file>
to restore a backup.
Migrating an existing installation to Docker
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/images
-
Dump your existing MySQL data into a file:
sudo mysqldump -uroot --add-drop-database --databases lanager > /tmp/lanager/lanager.sql
-
Stop MySQL, Nginx & PHP running on your server:
sudo systemctl stop mysql nginx php7.2-fpm sudo systemctl start mysql nginx php7.2-fpm
-
Copy your existing uploaded images into the temporary directory:
cp /var/www/lanager/storage/app/public/images/* /tmp/lanager/images
-
Back up your existing
.env
file:cp .env .env.original
-
Update your existing
.env
file:nano .env
APP_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 --detach
-
Load the environment file containing the database details into the current shell
source .env
-
Restore 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.sql
-
Restore 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.2
-
Remove the temporary directory:
rm -rf /tmp/lanager
Development
Development environment setup
-
Follow the steps from the Setup section above
-
Stop the running containers
docker-compose down
-
Check out the development branch of
lanager-docker-compose
cd lanager-docker-compose git checkout develop
-
Edit
lanager-docker-compose/.env
and add the following lines:APP_ENV=local APP_DEBUG=true
-
In a directory outside of
lanager-docker-compose
, clone thelanager
repository:git clone --branch develop https://github.com/zeropingheroes/lanager
-
Install
composer
on your host computer -
From the
lanager
directory, install composer dependencies:composer install --no-scripts
-
Set 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/storage
-
From the
lanager-docker-compose
directory, runenvsubst
to substitute in the path to lanager intodocker-compose.override.yml
:envsubst < docker-compose.override.yml.example > docker-compose.override.yml
-
Start the containers
docker-compose up --detach
-
After 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.
Start and stop the development environment
To stop the development environment run docker-compose stop
.
When you're ready to start developing again run docker-compose start
.
Destroy the development environment
To destroy the development environment and all volumes that store lanager data, run:
docker-compose down --volumes
Follow the setup steps above to get a fresh development environment.
Enable pre-commit hooks
To automatically check for and fix problems with your code before you commit:
- Install pre-commit
- Install PHP Codesniffer & Code beautifier
- From the
lanager/
directory, runpre-commit install
To check your code, run pre-commit run --all-files
or attempt to run git commit
Recompiling JavaScript & CSS assets
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 install
docker run -it --rm -v "$PWD":/var/www/html -w /var/www/html node:14-alpine npm run dev
To 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-poll
To 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 prod
Running tests
Before 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.
Feedback & Contributions
- Found a bug? Got a great feature idea? Post it to the issue tracker!
- Want to contribute?
- Fork the project and add the features you want to see.
- Work on new features / bug fixes in the issue tracker.
- If you're really hardcore, request commit access.
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!