---
# System prepended metadata

title: SkotOS Trial Run

---

# SkotOS Trial Run

My experience with DGD is minimal so I'm walking into this with only basic knowledge. I'll document my experience here along with any obstacles I encounter.

## Step 1: Install Homebrew

Copy and paste the following into the terminal.

```
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
```

## Step 2: Download the repository

1. Navigate to https://github.com/ChatTheatre/SkotOS
1. Click the green "Code" button and download the zip file.
1. Extract the zip file in directory of choice. For testing purposes, I kept mine in the Downloads folder.

## Step 3: Run the "installation" command

Within the terminal, navigate to the folder and run the setup command.

```
$ cd Downloads

$ cd SkotOS-master

$ ls

AGPL.md				README_Shentino.md
CC_BY-SA_3.0_Unported.md	cores
CLA-signed			dev_scripts
CLA.md				skoot
HACKING.md			skotos.database
LICENSE.md			skotos.dgd
README.md			tmp

$ cd dev_scripts

$ ls

dev_nginx.conf			orchil_profiles.js
mac_setup.sh			post_install_instructions.txt

$ ./mac_setup.sh

```

**PROBLEM ENCOUNTERED**

```
~/Downloads/SkotOS-master
Cloning Orchil
Cloning into '../orchil'...
Enter passphrase for key '/Users/sarahtackett/.ssh/id_rsa': 
Enter passphrase for key '/Users/sarahtackett/.ssh/id_rsa': 
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
```
After some investigating, I discovered that I needed to add a SSH key to my GitHub account.

To check if you have already have an existing key, open up the terminal:

```
$ cd ~/.ssh

$ ls

id_rsa		id_rsa.pub	id_rsa2		id_rsa2.pub	known_hosts
```

If id_rsa.pub exists, you have a key. Use the vi command to open the id_rsa.pub file and copy the contents.

`$ vi ~/.ssh/id_rsa.pub`

Now login to GitHub and go to Settings -> SSH and GPG Keys. Click "New SSH Key" and paste your ssh key into the box then click save.

At this point you should be able to successfully run mac_setup.sh using the above directions.

However, I ran into an additional problem in that I was being prompted for a passphrase for my key and I had no clue what this was. So I removed my existing key, regenerated a new one with a passphrase I could remember, and added it to my GitHub account.

```
Remove your SSH public/private keys:
$ rm ~/.ssh/id_rsa*
    
Recreate the keypair, choosing a new passphrase:
$ ssh-keygen -t rsa -f ~/.ssh/id_rsa

Add the newly created private key to your OS X Keychain to store the passphrase and manage unlocking it automatically:
$ ssh-add -K ~/.ssh/id_rsa
```

After completing this step, I was able to successfully run the installation file!

## Step 4: Post Installation Instructions

Within the SkotOS-master/dev_scripts directory is post_install_instructions.txt file. Read it thoroughly. 

### Step 4.1: Starting the websocket tunnels

You may need to install node.js if you haven't already.

```
$ brew install node
```

Copy and paste the commands from the text file into the terminal.

**PROBLEM ENCOUNTERED**

I ran into this error when running the tunnel commands

```
internal/modules/cjs/loader.js:883
  throw err;
  ^

Error: Cannot find module 'minimist'
Require stack:
- /Users/sarahtackett/Downloads/websocket-to-tcp-tunnel/src/Relay.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:880:15)
    at Function.Module._load (internal/modules/cjs/loader.js:725:27)
    at Module.require (internal/modules/cjs/loader.js:952:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (/Users/sarahtackett/Downloads/websocket-to-tcp-tunnel/src/Relay.js:8:12)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/sarahtackett/Downloads/websocket-to-tcp-tunnel/src/Relay.js'
  ]
}

```

I resolved this by installing npm.

```
$ npm install
```

You will know the websockets are running if you navigate to http://localhost:10801/ and http://localhost:10802/ and receive the message "upgrade required"

### Step 4.2: Nginx

You may need to install nginx if you haven't already

```
$ brew install nginx

...

$ sudo nginx
```

Navigate to http://localhost:8080 to ensure it is running.

## Step 5: Starting DGD

Since I saved SkotOS-master to the Downloads, that is the location I will navigate to to launch the game.

```
$ cd Downloads

$ ./dgd/bin/dgd ./SkotOS-master/skotos.dgd
```

If you already have a database that you want to use, save it in the SkotOS-master directory and use this command instead. When a database is not specified, a new one will be created. You can expect that to take awhile (roughly 6 minutes).

```
./dgd/bin/dgd ./SkotOS-master/skotos.dgd ./SkotOS-master/skotos.database
```

**PROBLEM ENCOUNTERED**

I received this error when trying to run the command.

```
$ ./dgd/bin/dgd ./SkotOS-master/skotos.dgd
Config error: bad base directory "./skoot"
```

I resolved it by editing this line of the SkotOS-master/skotos.dgd file from

`directory	= “./skoot";`

to

`directory	= "/Users/sarahtackett/Downloads/SkotOS-master/skoot";`

I ran the command again and it worked! I have a feeling I'm doing something dumb like lauching the command from the wrong directory but it works for now.


## Step 6: Launching the client

**PROBLEM ENCOUNTERED**

The post installation instructions says to navigate to http://localhost:10900/gables/gables.htm but this doesn't work.

1. The port number is typoed. Should be 10090.
1. Even after correcting the port number, /gables/gables.htm could not be found. I was able to get a client to work by copying the profiles.js file from the dev_scripts folder to the orchil folder and creating my own "gables" client directory.

I'm getting this error now when trying to connect:

```
Starting connection to: ws://localhost:10800/gables
CONNECTED
DISCONNECTED
Password: SECRET NONE
Authentication error: LOCAL BAD USER/PASS
```

I assume it has something to do with this part of the post installation instructions:

```
And of course you'll need to run Skotos. Make sure to patch SkotOS to include your new administrative user, as described at "https://ChatTheatre.github.io/SkotOS-Doc/setup.md". This will determine your username and password!
```

The url does not work.

I was able to get the tree of woe to work by doing two things. First, in profiles.js, add the following property -> "http_port": 10080

Without http_port defined, it assumes all woe files will be opened on localhost:80. Secondly, there is a bug in woe-init.js

Starting on line 262...

```
if(c.http_port) {
    port = profile.http_port;
} else {
    port = 80;
}
```

Change it to...

```
if(c.http_port) {
    port = c.http_port;
} else {
    port = 80;
}
```

## Feedback

I know the documentation is still a work in progress but I want to note a few key points here:

1. It would be useful to mention prerequisites before embarking on this process. Install homebrew, nginx, npm, nodejs, add ssh key to GitHub account (how to generate a ssh key).

2. Unless someone has experience with dgd, the correct syntax to launch the game isn't clear. I was getting an error when trying to do it the way I thought was right and I have a feeling it's because I'm doing something silly like not executing the command from within the proper directory. I was able to get around this by editing the skotos.dgd file and changing the "directory" reference from "./skoot" to "/Users/sarahtackett/Downloads/SkotOS-master/skoot" which isn't ideal. Like I said, probably me doing something silly but would be useful to note where the command should be executed from.

3. The url (https://ChatTheatre.github.io/SkotOS-Doc/setup.md) reference in the post installation instructions for setting up a username and password does not work. 

4. There is also a typo on this line in the same file: 

For the web client: point your web browser at http://localhost:10900/gables/gables.htm

The port number should be 10090. Though even with correcting that, the link did not work. Is the orchil folder that is being pulled a current version? I did not see a gables folder in the directory.

5. I was able to fiddle with the orchil stuff enough to get the client to launch but was met with a "Authentication error: LOCAL BAD USER/PASS" error (presumably because I could not complete the username/password setup).

6. I was able to get the tree of woe to work by doing two things. First, in profiles.js, add the following property -> "http_port": 10080 

Without http_port defined, it assumes all woe files will be opened on localhost:80. Secondly, there is a bug in woe-init.js
Starting on line 262...

```
if(c.http_port) {
    port = profile.http_port;
} else {
    port = 80;
}
```
Change it to...
```
if(c.http_port) {
    port = c.http_port;
} else {
    port = 80;
}
```



Once I got over the initial hurdle of figuring out prerequisites, the setup was fairly seamless. Once I figure out the username/password issue, it will be good to go! Awesome work on everything. Having set up a few game instances in the past, this makes it SO much easier.
