ArchaicQuest / ArchaicQuest-II

ArchaicQuest II :dragon: is a multiplayer text based RPG known as a Multi User Dungeon (MUD) that is playable from your browser.
https://www.archaicquest.com
MIT License
132 stars 22 forks source link

label:question can I install AQ on Linux? #19

Closed magic-space closed 4 years ago

magic-space commented 4 years ago

Hi visualstudio I have been installed.

So all what I see on your docu is for windows.

Can you a me a give me a little bit support zu make this?

Love greetings from Germany

LiamKenneth commented 4 years ago

Hey, you need dotnet core 3.1 installed https://docs.microsoft.com/en-us/dotnet/core/install/linux

once installed you can use the make file at the project root to build the project and run.

this is the file https://github.com/ArchaicQuest/ArchaicQuest-II/blob/master/Makefile

in a command prompt enter make run to start the project.

To add content to the game and to connect with the web client you'll need these projects: https://github.com/ArchaicQuest/ArchaicQuest-II-Web-Admin https://github.com/ArchaicQuest/ArchaicQuest-II-Web-Client

^these 2 are angular projects so need node installed and just run npm install and then npm start

let me know if you have more questions

magic-space commented 4 years ago

Wow mega thanks to you I will check that out.

magic-space commented 4 years ago

When I make this I can't connect to the admin panel ore web client. I follow your tutorial.

I will check your docs.

Ore you have an answer for me.

When I start the server this tells me loop

magic-space commented 4 years ago

Now I installed mongo db to are for version 2 I can't find docu

LiamKenneth commented 4 years ago

You don't need MongoDB, the database is Lite db and part of the project.

in the folder you have AQ downloaded run this in the console dotnet run -p ArchaicQuestII.API/ArchaicQuestII.API.csproj in the console it will say it's running on localhost:xxx if successful.

also make sure dotnet is a recognized command and installed properly.

What trouble are you having with the admin project? It will only work if the AQ server is running

magic-space commented 4 years ago

Now clone AQ2 and CD in project root AQ2 than command make. After this when is finished with no errors I command this make run.

Server successfully startet with port when I go to my browser and I'm add the ip + port in terminal se the connection. I know here on the server side I can't see anymore.

Next I installed AQ2Admin in terminal I command this cd .. / fonts and cd AQ2Admin and command npm install and npm start I see after this is finished server is up and connect to http://localhost:1337

And the same by the client when I open my browser and connect to my ip plus port I see

Die Website ist nicht erreichbar http://myip:1337/ ist nicht erreichbar.

Versuchen Sie Folgendes:

Verbindung prüfen

LiamKenneth commented 4 years ago

You can't enter the server address in the browser. but once it's running, run the admin tool and go to http://localhost:1337 and you will be able to add content.

To see it in action though you need to run the web client.

I definitely need to update the readme as it's out of date and could be clearer

magic-space commented 4 years ago

@LiamKenneth at the first big thanks fo support and your help.

Okay i downloadet 3 Projects first is the Server this has his own folder named AQServer in public_html. Next is AQadmin folder this folder is in public_html. And the last one is AQ2client folder is in the same folder public_html

INFO: I dont install AQ on localhost computer so i installed it on my server.

  1. cd in AQ2Server and Enter make.
  2. after is finished with now errors i make run this run with no errors all be fine.
  3. the server is starting and message me in Terminal: loop loop loop
  4. wehn i browse to my server ip with port to the server, can i see my connection in server terminal loop loop xyz connected xxxxx.,.x,.x. Connection refused connection not alowed.

This is OK server Running.

So now i install the admin. i open a new terminal session ore i enter screen in the terminal. now i go to the AQ2admin folder and enter npm install after this i make npm run.

the admin panel starts with my ip and port.

the same i make this with the game client.

now i open my brwser and enter myserverip:1337 now tells me the site cannot be found.

i dont know what is my failure.

I hope I get the game up and running and can collect it and share it in my community on http://idlegames.ddnss.de

take a look on my site when you love games.

and sorry for my bad english

love greetings from germany

magic-space commented 4 years ago

Okay when the server is up I see this in terminal

make run dotnet run -p ArchaicQuestII.API/ArchaicQuestII.API.csproj started loop info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0] User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest. Hosting environment: Development Content root path: /home/wumix/web/idlegames.ddnss.de/public_html/public/ac2server/ArchaicQuestII.API Now listening on: http://[::]:62640 Application started. Press Ctrl+C to shut down.

magic-space commented 4 years ago

What is the folder wwwroot?

magic-space commented 4 years ago

So and this is from aq2admin

`ng serve --port 1337

chunk {World-world-module} World-world-module.js, World-world-module.js.map (World-world-module) 556 kB [rendered] chunk {class-class-module} class-class-module.js, class-class-module.js.map (class-class-module) 137 kB [rendered] chunk {common} common.js, common.js.map (common) 2.17 kB [rendered] chunk {dashboard-dashboard-module} dashboard-dashboard-module.js, dashboard-dashboard-module.js.map (dashboard-dashboard-module) 2 MB [rendered] chunk {default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~4eb9fed0} default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~4eb9fed0.js, default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~4eb9fed0.js.map (default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~4eb9fed0) 42.4 kB [rendered] chunk {default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~ae3a8a55} default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~ae3a8a55.js, default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~ae3a8a55.js.map (default~World-world-module~class-class-module~dashboard-dashboard-module~items-item-module~mobs-mob-~ae3a8a55) 102 kB [rendered] chunk {default~World-world-module~class-class-module~items-item-module~mobs-mob-module~skills-spells-skills~5dd91aef} default~World-world-module~class-class-module~items-item-module~mobs-mob-module~skills-spells-skills~5dd91aef.js, default~World-world-module~class-class-module~items-item-module~mobs-mob-module~skills-spells-skills~5dd91aef.js.map (default~World-world-module~class-class-module~items-item-module~mobs-mob-module~skills-spells-skills~5dd91aef) 263 kB [rendered] chunk {default~World-world-module~items-item-module} default~World-world-module~items-item-module.js, default~World-world-module~items-item-module.js.map (default~World-world-module~items-item-module) 16.2 kB [rendered] chunk {default~dashboard-dashboard-module~settings-settings-module} default~dashboard-dashboard-module~settings-settings-module.js, default~dashboard-dashboard-module~settings-settings-module.js.map (default~dashboard-dashboard-module~settings-settings-module) 97.6 kB [rendered] chunk {items-item-module} items-item-module.js, items-item-module.js.map (items-item-module) 350 kB [rendered] chunk {main} main.js, main.js.map (main) 588 kB [initial] [rendered] chunk {mobs-mob-module} mobs-mob-module.js, mobs-mob-module.js.map (mobs-mob-module) 412 kB [rendered] chunk {polyfills} polyfills.js, polyfills.js.map (polyfills) 140 kB [initial] [rendered] chunk {runtime} runtime.js, runtime.js.map (runtime) 10.2 kB [entry] [rendered] chunk {settings-settings-module} settings-settings-module.js, settings-settings-module.js.map (settings-settings-module) 21.7 kB [rendered] chunk {skills-spells-skills-spells-module} skills-spells-skills-spells-module.js, skills-spells-skills-spells-module.js.map (skills-spells-skills-spells-module) 160 kB [rendered] chunk {styles} styles.js, styles.js.map (styles) 952 kB [initial] [rendered] chunk {vendor} vendor.js, vendor.js.map (vendor) 5.18 MB [initial] [rendered] Date: 2020-08-21T19:18:43.970Z - Hash: 6042981ba2890fb1eae1 - Time: 72916ms Angular Live Development Server is listening on localhost:1337, open your browser on http://localhost:1337/ : Compiled successfully.`

LiamKenneth commented 4 years ago

Oh ok I see what you're doing. Those port numbers are local to the server so you won't be able to access them externally. You'll need to use something like nginx. I have a basic guide but it's not ready to be published but it may help.

Install NGINX

sudo apt-get install nginx
sudo service nginx start

access the nginx config sudo nano /etc/nginx/sites-available/default Add this to the location object, note the port number

server {
    listen 80;
    location / {
        proxy_pass http://localhost:5123;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

More config options explained

Test nginx config works then reload

sudo nginx -t 
sudo nginx -s reload

Adding a second site

To add a second site, follow the steps above but create a new config file. Enable the new server block file by creating a symbolic link from the file to the sites-enabled directory:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Deploy site

copy files sudo \cp -a /home/user/project/bin/Debug/netcoreapp3.1/publish /var/project

Set up Systemd

Create a new file for the service: sudo nano /etc/systemd/system/testapp.service copy the below changing the name of testapp to your app. and replacing the Username

[Unit]
Description=Test app service

[Service]
WorkingDirectory=/var/testapp/publish
ExecStart=/usr/bin/dotnet /var/testapp/publish/testapp.dll --server.urls:http://*:5123
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=testapp
User={your user}
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

run sudo systemctl start testapp.service

check it's running sudo systemctl status testapp.service hopefully you see something like this:

$ sudo systemctl status testapp.service
● testapp.service - Test app service
   Loaded: loaded (/etc/systemd/system/testapp.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2020-05-06 19:18:00 BST; 8s ago
 Main PID: 3218 (dotnet)
    Tasks: 12 (limit: 1078)
   Memory: 29.0M
   CGroup: /system.slice/testapp.service
           └─3218 /usr/bin/dotnet /var/testapp/publish/testapp.dll --server.urls:http://*:5123 || echo (testing)

if you make changes to the service you will need to run sudo systemctl daemon-reloadto update the service.


I hope this helps, after the steps above you should be able to access the site using the server IP. Also if you're uploading this to share on your forum don't forget to share a link back to the original site http://www.archaicquest.com/

magic-space commented 4 years ago

Wow thank you I understand I will check that out.

Liam Kenneth notifications@github.com schrieb am Sa., 22. Aug. 2020, 08:12:

Oh ok I see what you're doing. Those port numbers are local to the server so you won't be able to access them externally. You'll need to use something like nginx. I have a basic guide but it's not ready to be published but it may help. Install NGINX

sudo apt-get install nginx

sudo service nginx start

access the nginx config sudo nano /etc/nginx/sites-available/default Add this to the location object, note the port number

server {

listen 80;

location / {

    proxy_pass http://localhost:5123;

    proxy_http_version 1.1;

    proxy_set_header Upgrade $http_upgrade;

    proxy_set_header Connection keep-alive;

    proxy_set_header Host $host;

    proxy_cache_bypass $http_upgrade;

}

}

More config options explained http://rehansaeed.com/nginx-asp-net-core-depth/

Test nginx config works then reload

sudo nginx -t

sudo nginx -s reload

Adding a second site

To add a second site, follow the steps above but create a new config file. Enable the new server block file by creating a symbolic link from the file to the sites-enabled directory:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/ Deploy site

copy files sudo \cp -a /home/user/project/bin/Debug/netcoreapp3.1/publish /var/project Set up Systemd

Create a new file for the service: sudo nano /etc/systemd/system/testapp.service copy the below changing the name of testapp to your app. and replacing the Username

[Unit]

Description=Test app service

[Service]

WorkingDirectory=/var/testapp/publish

ExecStart=/usr/bin/dotnet /var/testapp/publish/testapp.dll --server.urls:http://*:5123

Restart=always

RestartSec=10

KillSignal=SIGINT

SyslogIdentifier=testapp

User={your user}

Environment=ASPNETCORE_ENVIRONMENT=Production

Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]

WantedBy=multi-user.target

run sudo systemctl start testapp.service

check it's running sudo systemctl status testapp.service hopefully you see something like this:

$ sudo systemctl status testapp.service

● testapp.service - Test app service

Loaded: loaded (/etc/systemd/system/testapp.service; enabled; vendor preset: enabled)

Active: active (running) since Wed 2020-05-06 19:18:00 BST; 8s ago

Main PID: 3218 (dotnet)

Tasks: 12 (limit: 1078)

Memory: 29.0M

CGroup: /system.slice/testapp.service

       └─3218 /usr/bin/dotnet /var/testapp/publish/testapp.dll --server.urls:http://*:5123 || echo (testing)

if you make changes to the service you will need to run sudo systemctl daemon-reloadto update the service.

I hope this helps, after the steps above you should be able to access the site using the server IP. Also if you're uploading this to share on your forum don't forget to share a link back to the original site http://www.archaicquest.com/

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/ArchaicQuest/ArchaicQuest-II/issues/19#issuecomment-678601437, or unsubscribe https://github.com/notifications/unsubscribe-auth/AQDUQLOLUXZDGE6A3MYEU5TSB5OVNANCNFSM4QGPUW6A .