ll-hax-docs/sifas/private-server/index.html
2024-02-20 19:35:10 -06:00

1122 lines
No EOL
34 KiB
HTML

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="canonical" href="https://ll.hax.sif.moe/sifas/private-server/">
<link rel="prev" href="../">
<link rel="next" href="../easy-install/">
<link rel="icon" href="../../assets/images/favicon.png">
<meta name="generator" content="mkdocs-1.5.3, mkdocs-material-9.5.10">
<title>Private (self hostable) servers - LL Hax Docs</title>
<link rel="stylesheet" href="../../assets/stylesheets/main.7e359304.min.css">
<link rel="stylesheet" href="../../assets/stylesheets/palette.06af60db.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="../../style/better.css">
<script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce((e,_)=>(e<<5)-e+_.charCodeAt(0),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="pink" data-md-color-accent="deep-purple">
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#disclaimers" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<header class="md-header md-header--shadow" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="../.." title="LL Hax Docs" class="md-header__button md-logo" aria-label="LL Hax Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2Z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
LL Hax Docs
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
Private (self hostable) servers
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="pink" data-md-color-accent="deep-purple" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
</label>
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="pink" data-md-color-accent="deep-purple" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12c0-2.42-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12 20 8.69Z"/></svg>
</label>
</form>
<script>var media,input,key,value,palette=__md_get("__palette");if(palette&&palette.color){"(prefers-color-scheme)"===palette.color.media&&(media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']"),palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent"));for([key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12Z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41Z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list" role="presentation"></ol>
</div>
</div>
</div>
</div>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="../.." title="LL Hax Docs" class="md-nav__button md-logo" aria-label="LL Hax Docs" data-md-component="logo">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54Z"/></svg>
</a>
LL Hax Docs
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../.." class="md-nav__link">
<span class="md-ellipsis">
Home
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../pugu/" class="md-nav__link">
<span class="md-ellipsis">
Puchiguru
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
<label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0">
<span class="md-ellipsis">
SIF
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
<label class="md-nav__title" for="__nav_3">
<span class="md-nav__icon md-icon"></span>
SIF
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../../sif/" class="md-nav__link">
<span class="md-ellipsis">
SIF - Introduction
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../sif/private-servers/" class="md-nav__link">
<span class="md-ellipsis">
Private (self hostable) servers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../sif/apk-patching/" class="md-nav__link">
<span class="md-ellipsis">
Patching the apk
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../sif/ipa-patching/" class="md-nav__link">
<span class="md-ellipsis">
Patching the ipa
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../sifac/" class="md-nav__link">
<span class="md-ellipsis">
SIFAC
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
<label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0">
<span class="md-ellipsis">
SIFAS
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
<label class="md-nav__title" for="__nav_5">
<span class="md-nav__icon md-icon"></span>
SIFAS
</label>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="../" class="md-nav__link">
<span class="md-ellipsis">
SIFAS - Introduction
</span>
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
<span class="md-ellipsis">
Private (self hostable) servers
</span>
<span class="md-nav__icon md-icon"></span>
</label>
<a href="./" class="md-nav__link md-nav__link--active">
<span class="md-ellipsis">
Private (self hostable) servers
</span>
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#disclaimers" class="md-nav__link">
<span class="md-ellipsis">
Disclaimers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#intents" class="md-nav__link">
<span class="md-ellipsis">
Intents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#convention" class="md-nav__link">
<span class="md-ellipsis">
Convention
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#preparing_the_client" class="md-nav__link">
<span class="md-ellipsis">
Preparing the client
</span>
</a>
<nav class="md-nav" aria-label="Preparing the client">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#clients_version" class="md-nav__link">
<span class="md-ellipsis">
Clients version
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#premade_clients" class="md-nav__link">
<span class="md-ellipsis">
Premade clients
</span>
</a>
<nav class="md-nav" aria-label="Premade clients">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#android" class="md-nav__link">
<span class="md-ellipsis">
Android
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#patching_ios_client_to_new_address" class="md-nav__link">
<span class="md-ellipsis">
Patching ios client to new address
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#preparing_the_server" class="md-nav__link">
<span class="md-ellipsis">
Preparing the server
</span>
</a>
<nav class="md-nav" aria-label="Preparing the server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#elichika_servers" class="md-nav__link">
<span class="md-ellipsis">
Elichika servers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other_servers" class="md-nav__link">
<span class="md-ellipsis">
Other servers
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#operating_the_server" class="md-nav__link">
<span class="md-ellipsis">
Operating the server
</span>
</a>
<nav class="md-nav" aria-label="Operating the server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#patching_the_database" class="md-nav__link">
<span class="md-ellipsis">
Patching the database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#providing_a_cdn_server" class="md-nav__link">
<span class="md-ellipsis">
Providing a CDN server
</span>
</a>
<nav class="md-nav" aria-label="Providing a CDN server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#online_cdn" class="md-nav__link">
<span class="md-ellipsis">
Online CDN
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#self_hosted_cdn" class="md-nav__link">
<span class="md-ellipsis">
Self hosted CDN
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../easy-install/" class="md-nav__link">
<span class="md-ellipsis">
Easy install
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../apk-patching/" class="md-nav__link">
<span class="md-ellipsis">
Patching the apk
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="../../sif2/" class="md-nav__link">
<span class="md-ellipsis">
SIF2
</span>
</a>
</li>
<li class="md-nav__item">
<a href="../../about/" class="md-nav__link">
<span class="md-ellipsis">
About
</span>
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#disclaimers" class="md-nav__link">
<span class="md-ellipsis">
Disclaimers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#intents" class="md-nav__link">
<span class="md-ellipsis">
Intents
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#convention" class="md-nav__link">
<span class="md-ellipsis">
Convention
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#preparing_the_client" class="md-nav__link">
<span class="md-ellipsis">
Preparing the client
</span>
</a>
<nav class="md-nav" aria-label="Preparing the client">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#clients_version" class="md-nav__link">
<span class="md-ellipsis">
Clients version
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#premade_clients" class="md-nav__link">
<span class="md-ellipsis">
Premade clients
</span>
</a>
<nav class="md-nav" aria-label="Premade clients">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#android" class="md-nav__link">
<span class="md-ellipsis">
Android
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#patching_ios_client_to_new_address" class="md-nav__link">
<span class="md-ellipsis">
Patching ios client to new address
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#preparing_the_server" class="md-nav__link">
<span class="md-ellipsis">
Preparing the server
</span>
</a>
<nav class="md-nav" aria-label="Preparing the server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#elichika_servers" class="md-nav__link">
<span class="md-ellipsis">
Elichika servers
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#other_servers" class="md-nav__link">
<span class="md-ellipsis">
Other servers
</span>
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#operating_the_server" class="md-nav__link">
<span class="md-ellipsis">
Operating the server
</span>
</a>
<nav class="md-nav" aria-label="Operating the server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#patching_the_database" class="md-nav__link">
<span class="md-ellipsis">
Patching the database
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#providing_a_cdn_server" class="md-nav__link">
<span class="md-ellipsis">
Providing a CDN server
</span>
</a>
<nav class="md-nav" aria-label="Providing a CDN server">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#online_cdn" class="md-nav__link">
<span class="md-ellipsis">
Online CDN
</span>
</a>
</li>
<li class="md-nav__item">
<a href="#self_hosted_cdn" class="md-nav__link">
<span class="md-ellipsis">
Self hosted CDN
</span>
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<h1>Private (self hostable) servers</h1>
<h2 id="disclaimers">Disclaimers<a class="headerlink" href="#disclaimers" title="Permanent link">&para;</a></h2>
<p>The information presented by the authors of this documentation were either background knowledge, knowledge provided by community members, or knowledge learned from works published by community members.</p>
<p>The authors try to make sure that the information presented is correct. However, there might be incorrect info, or outdated info.</p>
<p>The authors try to acknowledge and credit the community members who share knowledge, develop tools, host resources, or helped in any other way, but there might be some missing credit. If that were the case, please know that it is not intended by the authors, and please contact the authors for proper credit.</p>
<p>The knowledge, tools, resources used by this documentation are acquired and presented with a good faith basis. While the authors try to ask creators for permission to use or feature their works, some works was used or featured without explicit permission. If you have problem with your works being mentioned / features, or your name being credited, please contact the authors to sort things out.</p>
<h2 id="intents">Intents<a class="headerlink" href="#intents" title="Permanent link">&para;</a></h2>
<p>This documentation will go somewhat in depth to the technical side, so for experienced audience, it can serve as a quick introduction to the working of the game and server. Do note that the provided packages might not work for you, however, the details explanation should give you want you need to get things working. Regardless, feel free to reach out to the community, both to help resolve your situation and to help make the documentation better.</p>
<p>This documentation will be about hosting and playing your own SIFAS server, more precisely, how to do so in general. For specific implementations of private server, we will only provide link to them or their documentation. This documentation will also discuss only the GL (Global) and JP (Japanese) version, although there exist private server for CN (Chinese) version as well.</p>
<!-- This documentation assume that you have some background knowledge related to the topic discussed, however, if this is your first time doing something like this, or you just want to learn more, you can also checkout the [Random knowledge](#random-knowledge) section. Various things that are common knowledge, things that are related and interesting (but not totally relevant to the discussion) are discussed. -->
<p>This documentation assume that you have some background knowledge related to the topic discussed. If this is your first time doing something like this, you will have to search up relevant information, or reach out to the community for help. </p>
<h2 id="convention">Convention<a class="headerlink" href="#convention" title="Permanent link">&para;</a></h2>
<p>As there are multiple platforms for both client and server, we use the following terms to refer to them:</p>
<ul>
<li>Client: The game/app itself. This is what you will use to play the game.</li>
<li>Server: The program that serve the necessary data for client(s) to function. This was Klab/MYNET/Bushiroad responsibility, but we will have to run our own server now that they have stoped supporting the game. The server often run in another machine, but there are setup that run the client and server on the same machine for android.</li>
<li>Android/iOS/android/ios: The platform that the client run on. You should know what your platform is.</li>
<li>Window/Linux/MacOS/Android: The platform that the server will run on.</li>
</ul>
<h2 id="preparing_the_client">Preparing the client<a class="headerlink" href="#preparing_the_client" title="Permanent link">&para;</a></h2>
<h3 id="clients_version">Clients version<a class="headerlink" href="#clients_version" title="Permanent link">&para;</a></h3>
<p>We will be using the 3.12 clients:</p>
<ul>
<li>If you can't recall, these are released after the game is dead.</li>
<li>The only functionality is to show a "SIFAS EoS, thanks for playing SIFAS" message, or so it seems.</li>
<li>The truth is that, none of the original functionality was deleted, but the crack-proof is removed.</li>
<li>Which mean that if we patch the starting screen away, we have access to a superior version of the app.</li>
<li>You can learn how to do so <a href="../apk-patching/">here</a>.</li>
</ul>
<h3 id="premade_clients">Premade clients<a class="headerlink" href="#premade_clients" title="Permanent link">&para;</a></h3>
<h4 id="android">Android<a class="headerlink" href="#android" title="Permanent link">&para;</a></h4>
<p>You can download the apks from <a href="https://github.com/arina999999997/elichika/releases/tag/clients">here</a>. This should work with both 32 bit and 64 bit devices.</p>
<p>These clients connect to http://127.0.0.1:8080, and is mainly designed to work for <a href="https://github.com/arina999999997/elichika/">elichika</a>. However, you can modified them to work for other servers if necessary (see <a href="../apk-patching/">patching apks</a> for details).</p>
<h4 id="patching_ios_client_to_new_address">Patching ios client to new address<a class="headerlink" href="#patching_ios_client_to_new_address" title="Permanent link">&para;</a></h4>
<p>The <code>.ipa</code> files do not need to be patched thanks to tri.angle in the discord server. You can just sideload the app and change the server url in setting.</p>
<p>You can download the <code>ipa</code> files from <a href="https://mega.nz/folder/klACSZzC#Lxv3m-Gq8_7FF_4pcr4X8A">here</a>.
These <code>.ipa</code> files do not enable http servers by default, you will need to modify <code>Info.plist</code> using <a href="https://github.com/corpnewt/ProperTree">ProperTree</a> and enable <code>NSAllowsArbitraryLoads</code>, or for your convinience a pre-patched <code>ipa</code> with http support enabled can be downloaded <a href="https://ethanthesleepy.one/public/lovelive/jp_allstars_3_12_0.ipa">here</a>.</p>
<p>Note: currently the global version indefinitely loads for no apparent reason. It may not work.</p>
<h2 id="preparing_the_server">Preparing the server<a class="headerlink" href="#preparing_the_server" title="Permanent link">&para;</a></h2>
<p>You need to pick an implemtentation or make your own.</p>
<h3 id="elichika_servers">Elichika servers<a class="headerlink" href="#elichika_servers" title="Permanent link">&para;</a></h3>
<p><a href="https://github.com/YumeMichi/elichika">elichika</a> is a SIFAS private server written by <code>YumeMichi</code> (<code>.yumemichi</code> on discord).</p>
<p>However, it's recommended to use the <a href="https://github.com/arina999999997/elichika/">forked elichika</a> that are much easier to setup and has more features and more to come. Refer to the github repository for server-specific details.</p>
<h3 id="other_servers">Other servers<a class="headerlink" href="#other_servers" title="Permanent link">&para;</a></h3>
<p>Currently there are no public "non-elichika" private server implementation that we know of. If you are working on your own implementation and want to share it, please reach out to the LL Hax discord.</p>
<h2 id="operating_the_server">Operating the server<a class="headerlink" href="#operating_the_server" title="Permanent link">&para;</a></h2>
<p>These are some knowledge necessary to operate the server.</p>
<h3 id="patching_the_database">Patching the database<a class="headerlink" href="#patching_the_database" title="Permanent link">&para;</a></h3>
<p>The client will download the database directly from your server after it successfully connected.</p>
<p>The details on how to patch them is complicated and contains weird cryptography stuff.</p>
<p>The <a href="https://github.com/arina999999997/elichika/">forked elichika</a> handle this automatically, you can look into how it does that for details.</p>
<h3 id="providing_a_cdn_server">Providing a CDN server<a class="headerlink" href="#providing_a_cdn_server" title="Permanent link">&para;</a></h3>
<p>A CDN (content distribution network) server is where the game(app) will download the necessary files (i.e. songs, stories). No matter what server implementation you use, you will need a CDN host.</p>
<p>More precisely, the client will request the link to download assets at <code>/asset/getPackUrl</code>, and you will have to response with the correct link to download them. There is no restriction to where the client will download the file from, so you can link to any server.</p>
<h4 id="online_cdn">Online CDN<a class="headerlink" href="#online_cdn" title="Permanent link">&para;</a></h4>
<p>Thanks to <code>sarah</code> (<code>sarayalth</code>) from the LL Hax discord, there is a CDN that we can use to avoid hosting our own files.</p>
<p>The server is at <a href="https://llsifas.catfolk.party/static">https://llsifas.catfolk.party/static</a> or <a href="https://llsifas.imsofucking.gay/static">https://llsifas.imsofucking.gay/static</a>.</p>
<p>You can get the files in <code>static/2d61e7b4e89961c7</code> for GL files or <code>static/b66ec2295e9a00aa</code> for JP files.</p>
<h4 id="self_hosted_cdn">Self hosted CDN<a class="headerlink" href="#self_hosted_cdn" title="Permanent link">&para;</a></h4>
<p>If you don't want to use the online CDN, you can download the data and host it yourself.</p>
<p>The data is around 20GB for both GL and JP server (around 40GB for both).</p>
<p>One way to get them is from <a href="https://archive.org/details/ll-sifas-cdn-data">archive.org</a>. The direct downloading speed is not that great, so be prepared to leave your machine on for a very long time. If you don't want that, download using the <code>.torrent</code>, it would be much appreciated if you also host the files once downloaded. Do note that there are risks associated with torrenting, but that topic will not be discussed here.</p>
<p>Another way to get them is from extracting the downloaded game files or download the files yourself from the online CDN.</p>
<p>You can also try to extract the relevant files from a client where you have the file downloaded. To extract the files, use <a href="https://youtu.be/j4oh3qrCrfw">this youtube tutorial</a>, or any other methods you know.</p>
</article>
</div>
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
</div>
</main>
<footer class="md-footer">
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": "../..", "features": [], "search": "../../assets/javascripts/workers/search.b8dbb3d2.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}}</script>
<script src="../../assets/javascripts/bundle.8fd75fb4.min.js"></script>
</body>
</html>