No description
Find a file
Pat Hartl 6ec919d1be Separate import and export functionality
This refactor splits the import and export functionality out of the ImportContext and adds an ExportContext. This also introduced separate importer and exporter implementations.

Additionally, adding archive, save, scripts, and server files to the final export archive has been implemented at the exporter implementation for each instead of handling it in the context. This should be a good pattern if other files need to be added down the road.
2025-07-27 17:51:50 -05:00
.github Upload nightly assets to release 2025-05-03 15:50:42 -05:00
Docs Basic README 2023-03-03 19:42:22 -06:00
LANCommander.AutoUpdater Update to .NET 9 2025-02-04 18:39:29 -06:00
LANCommander.Build macOS build 2025-03-21 19:34:05 -05:00
LANCommander.Launcher Merge pull request #316 from RattleSN4K3/feature/ReworkLoginMessaging 2025-06-29 21:15:11 -05:00
LANCommander.Launcher.CLI Configure Serilog logger with log level from debug settings (Launcher+CLI) 2025-06-16 21:49:57 +02:00
LANCommander.Launcher.Data Pass default username with fallback to "Player" in NameChange script 2025-05-13 00:23:12 +02:00
LANCommander.Launcher.Models Pass default username with fallback to "Player" in NameChange script 2025-05-13 00:23:12 +02:00
LANCommander.Launcher.Services Update depot game properly for library changes, checks local library 2025-05-26 22:38:13 +02:00
LANCommander.SDK Separate import and export functionality 2025-07-27 17:51:50 -05:00
LANCommander.SDK.Tests Utilizing MadMilkman.INI for ini parsing handling multi-value section entries (+ Update-IniValue parameter) 2025-05-13 02:36:37 +02:00
LANCommander.Server Separate import and export functionality 2025-07-27 17:51:50 -05:00
LANCommander.Server.Data Merge branch 'main' into refactor/optional-import-export 2025-07-25 18:42:39 -05:00
LANCommander.Server.Data.MySQL Update Pomelo MySQL database connector package 2025-02-26 01:00:33 -06:00
LANCommander.Server.Data.PostgreSQL Regenerate postgres migrations 2025-02-17 17:11:09 -06:00
LANCommander.Server.Data.SQLite Redo migrations, fix default container URI, better error handling on startup 2025-03-25 01:09:21 -05:00
LANCommander.Server.ImportExport Separate import and export functionality 2025-07-27 17:51:50 -05:00
LANCommander.Server.Services Separate import and export functionality 2025-07-27 17:51:50 -05:00
LANCommander.Server.Tests Render export dialog, resolve circular DI issues 2025-07-19 17:39:55 -05:00
LANCommander.Steam Update to .NET 9 2025-02-04 18:39:29 -06:00
LANCommander.UI Merge branch 'main' into refactor/optional-import-export 2025-07-25 18:42:39 -05:00
PCGamingWikiClient Lookup player counts from PCGamingWiki for multiplayer modes 2023-01-14 18:22:51 -06:00
.gitignore Remove app.css from tracking 2025-03-15 15:48:46 -05:00
LANCommander.sln Separate import and export functionality 2025-07-27 17:51:50 -05:00
LICENSE Create LICENSE 2024-03-24 15:57:40 -05:00
Microsoft.Common.props Ignore json files from all builds in solution 2024-08-22 01:13:02 -05:00
README.md Update README.md 2025-05-27 19:06:53 -05:00

LANCommander

GitHub Release GitHub commit activity GitHub Actions Workflow Status GitHub License Documentation Discord Support me on Patreon

LANCommander is an open-source digital game platform.

The main application is self-hostable and is built on the ASP.NET Blazor web application framework. Your self-hosted platform can be accessed through the offical LANCommander launcher. The database is implemented using SQLite so there is no complex setup required.

The platform is designed to work on local networks and loads no assets from the internet. It was originally developed to help assist a LAN party where the local network is closed and no internet access is permitted.

Builds for Windows, Linux, and macOS are provided, with varying levels of support/compatibility. Currently the launcher has only been tested to run on Windows

Community

Docker

A Docker image is available over at Docker Hub. A sample compose file is provided below:

services:
  lancommander:
    image: lancommander/lancommander:latest
    container_name: lancommander
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - /path/to/appdata/config:/app/config
    ports:
      - 1337:1337/tcp   # Webinterface
      - 35891:35891/udp # Beacon Broadcast
    restart: unless-stopped

All config files are available from /config. This include any archive uploads for games. Many of these paths can be changed under Settings if you wish to add additional volume mappings.

Note: The Docker image runs the Linux build and features such as server management may be limited.

FAQ

How do I get games?

The best games are either portable games or DRM-free games. Freeware, shareware, abandonware are all great available options. LANCommander is only a management/distribution system. It does not come bundled with any games.

It's worth joining our Discord as some pre-packaged freeware games are available to download.

I have a pretty large LAN party planned with hundreds of players. I have some sick infrastructure and a LAN cache. What do?

LANCommander communicates over HTTP(S). There is no LAN cache configuration provided, but all downloads are provided through the /api/Games/{id}/Download route.

Where can I get some help?

Documentation can be found at our documentation site. The Getting Started guide contains enough information to get your server up and running in minutes.

Our soon to be retired wiki is still available to plug any documentation holes while we work on updating the documentation site. Tutorials as well as sample configurations for Games and Redistributables can be found there.

How do I contribute?

Hit that fork button, submit a PR, there are no hard rules right now.

If you're not a developer but still want to contribute, contributing to our documentation site is a great way to give back to the community!

The LANCommander dev team is currently spearheaded by one developer in their free time. Paid donation tiers are available over at the Patreon page.

SDK

A separate assembly called LANCommander.SDK has been created for use in client applications. Here is a quick example of how one can authenticate to a LANCommander server and install a game to C:\Games:

var client = new LANCommander.SDK.Client("http://localhost:1337", "C:\\Games");

await client.AuthenticateAsync("username", "password");

client.Games.Install("114f653d-ea91-484b-8fe9-8e9bb58bde81");

To Do

LANCommander is far from complete. The basic implementation that exists will allow you to:

  • Manage games
  • Upload archives
  • Manage scripts
  • Manage keys
  • Download games
  • Basic user management
  • New user registration
  • Local "cloud" user saves
  • Dedicated server management/administration
  • Redistributable management and distribution
  • IPX Beacon for emulators such as DosBox
  • Game media management and automatic lookup (covers, icons, backgrounds)
  • Dedicated launcher for easy client setup

The following features are being considered:

  • Peer-to-peer file sharing of game files
  • Built-in VPN client/server for remote LAN parties
  • Social features including chat, friends list, etc.
  • Integration with platforms such as Discord, TeamSpeak, Mumble