├── LICENSE ├── README.md ├── assembly └── README.md ├── images ├── OLED_assembly.jpg ├── OLED_connection.jpg ├── OLED_mounting.jpg ├── OLED_screws.jpg ├── Silverjaw_Assembly.jpg ├── base_assembly.jpg ├── dc2_stacker_1.jpg ├── dc2_stacker_2.jpg ├── dc2_stacker_3.jpg ├── dc2_stacker_4.jpg ├── full_assembly.jpg ├── mounting_screws.jpg └── test_setup.jpg ├── sources ├── FaceplateV17.stl └── dc2_stacker.stl └── stacker.md /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 HARDTWARE 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DC2 Setup 2 | 3 | 0. [Unpacking your DC2](#0-unpacking-your-dc2) 4 | 1. [Power up your DC2](#1-power-up-your-dc2) 5 | 2. [Find the DC2 on your network](#2-find-the-dc2-on-your-network) 6 | 3. [Configure the DC2](#3-configure-the-dc2) 7 | 4. [Add the DC2 as a docker machine](#4-setup-dc2-as-a-docker-machine) 8 | 5. [Assemble the DC2](#5-dc2-assembly) 9 | 6. [FAQ](#6-faq) 10 | 11 | ## 0. Unpacking your DC2 12 | 13 | - The first time you open the container doors, be really careful. The container is a model and was not designed to be an enclosure. If a hinge breaks, you can set it aside. If you have success gluing your hing back on, please share. 14 | 15 | - We booted all of the MinnowBoard Turbots to make sure they would cleanly boot. See the FAQ below if your MinnowBoard does not boot up. 16 | 17 | ## 1. Power up your DC2 18 | 19 | 1. Let's make sure your MinnowBoard boots up and get it all setup while we can easily see the lights etc. before putting it in the container. If you have more than one DC2, let's set them up separately. 20 | 21 | 2. Set your MinnowBoard on the pink foam to protect it from shorting out. 22 | 23 | 3. Connect your USB drive to the MinnowBoard. Plug it into the USB socket that is blue. 24 | 25 | 4. Connect your MinnowBoard with an ethernet cable to the same network your PC that you will use to setup the DC2 is connected to. 26 | 27 | 5. OPTIONALLY connect your MinnowBoard to a display with a micro HDMI connector. 28 | 29 | 6. The last connection will be connecting your MinnowBoard to power. 30 | 31 | 7. You should see the USB drive light flicker. If you have an display connected, you should see the the boot sequence scroll across. 32 | 33 | ![test setup](./images/test_setup.jpg) 34 | 35 | 36 | ## 2. Find the DC2 on your network 37 | 38 | 1. Make sure you have Bonjour / mDNS. 39 | 40 | When you connect your DC2 to your network, it will be using DHCP to get an IP address. To work with the DC2 from other machines, we will need to find out where it is. The DC2 will default to having the '''dc2.local''' hostname which will be broadcast with mDNS aka Bonjour. If you have a Mac or Windows 10 machine, you are good to go. If you have an earlier version of Windows, you will need to install [Bonjour Services](https://support.apple.com/kb/DL999?viewlocale=en_US&locale=en_US), If you are on a linux box, you can install [Avahi](https://wiki.archlinux.org/index.php/Avahi). 41 | 42 | 2. If you have more than one DC2, then set them up one at a time so you can change the host names to differentiate between them. 43 | 44 | 3. Check you can connect to your DC2. 45 | 46 | Open up [http://DC2.local:8765](http://DC2.local:8765) with your browser -- this should return the configuration information from your DC2. 47 | 48 | It can take 40 seconds for the DC2 to boot, and 30 seconds for the dc2-node script to run and Bonjour to have completed its broadcast so that loading the web page to work. You should see something like this: 49 | 50 | ```json 51 | { 52 | "latestVersion": "1.0.4", 53 | "version": "1.0.4", 54 | "hostname": "dc2", 55 | "ip": "a.b.c.d", 56 | "MAC": "ff:ff:ff:ff:ff:ff", 57 | "callHomeResponse": 200 58 | } 59 | ``` 60 | 61 | Where `a.b.c.d` is the IP address of your DC2 and `ff:ff:ff:ff:ff:ff` is the MAC address of your DC2 ethernet port. 62 | 63 | ## 3. Configure the DC2 64 | 65 | 1. Check that you can SSH into your DC2. 66 | 67 | - `username`: `jack` is the preconfigured username 68 | - `password`: `hardtware` is the preconfigured password 69 | 70 | ```shell 71 | ssh jack@dc2.local 72 | ``` 73 | 74 | 2. Change your password 75 | 76 | ```shell 77 | passwd 78 | ``` 79 | 80 | Enter `hardtware` for the old password, and then enter your new password. 81 | 82 | 3. If you don't have an ssh key, on *another* machine run the following: 83 | 84 | ```shell 85 | ssh-keygen -b 4096 -f ~/.ssh/id_rsa.dc2 86 | ``` 87 | 88 | You will be prompted to create a passphrase, create one and enter it in twice as prompted. 89 | 90 | 4. Copy your SSH public key to your DC2. 91 | 92 | First `exit` your SSH session with your DC2. 93 | 94 | If your SSH public key is at `~/.ssh/id_rsa.pub` (if created above, use `~/.ssh/id_rsa.dc2`) then from your machine: 95 | 96 | ```shell 97 | ssh jack@dc2.local "cat >> .ssh/authorized_keys" < ~/.ssh/id_rsa.pub 98 | ``` 99 | 100 | Enter your new password when prompted. 101 | 102 | You should now be able to `ssh jack@dc2.local` and not be prompted for a password. 103 | 104 | 5. If you are not in the `America/Los Angeles` timezone you can change it with: 105 | 106 | ```shell 107 | sudo dpkg-reconfigure tzdata 108 | ``` 109 | 110 | 6. If you want to change the locale, follow directions at [https://help.ubuntu.com/community/Locale](https://help.ubuntu.com/community/Locale). 111 | 112 | 7. If you have more than one DC2, change your hostname by replacing `dc2` to a new hostname unique on your network (eg. dc2a, dc2b, dc2c) in the `/etc/hostname` and `/etc/hosts` files. 113 | 114 | For example, if you wanted to change the hostname to `dc2a`, you would run: 115 | 116 | ```shell 117 | sudo echo dc2a /etc/hostname 118 | sudo sed -i 's/dc2/dc2a/1' /etc/hosts 119 | ``` 120 | 121 | Then restart `hostname` and `avahi` services with: 122 | 123 | ```shell 124 | sudo service hostname restart 125 | sudo /etc/init.d/avahi-daemon restart 126 | ``` 127 | 128 | > NOTE: Everwhere you see `dc2` below, change that to the new hostname you have given your DC2. 129 | 130 | 8. OPTIONALLY change the username from `jack` to something else. This requires a few more commands and should be considered a bit more advnaced of a topic. 131 | 132 | In our example we will change the username to `bob` and remove `jack` entirely. For this example, start my being logged in as `jack`. 133 | 134 | Create the new user: 135 | 136 | ```shell 137 | sudo useradd -m bob 138 | ``` 139 | 140 | Set a `sudo` password for the user: 141 | 142 | ```shell 143 | sudo passwd bob 144 | ``` 145 | 146 | Create the `ssh` directory for the user: 147 | 148 | ```shell 149 | sudo mkdir /home/bob/.ssh 150 | sudo chown bob:bob /home/bob/.ssh 151 | sudo chmod 700 /home/bob/.ssh 152 | ``` 153 | 154 | If you created and copied over a ssh key for jack, let's copy it over to bob. 155 | 156 | ```shell 157 | sudo cp /home/jack/.ssh/authorized_keys /home/bob/.ssh/authorized_keys 158 | sudo chown bob:bob /home/bob/.ssh/authorized_keys 159 | ``` 160 | 161 | The last item is to add `bob` to all of the appropriate groups that `jack` is a member of: 162 | 163 | ```shell 164 | sudo usermod -a -G adm bob 165 | sudo usermod -a -G cdrom bob 166 | sudo usermod -a -G sudo bob 167 | sudo usermod -a -G dip bob 168 | sudo usermod -a -G plugdev bob 169 | sudo usermod -a -G lpadmin bob 170 | sudo usermod -a -G dc2 bob 171 | sudo usermod -a -G sambashare bob 172 | ``` 173 | 174 | In a new terminal window, try to SSH now as bob using pubkey auth: 175 | 176 | ```shell 177 | ssh -o IdentityFile=~/.ssh/id_rsa bob@dc2.local 178 | ``` 179 | 180 | > NOTE: You will need to change `~/.ssh/id_rsa` to your respective key path from above and `dc2.local` to whatever you changed your hostname to above as well. 181 | 182 | If you are able to SSH in at this point you have correctly created another user and setup their SSH key correctly. 183 | 184 | As the final step, you may remove the `jack` user from the device. 185 | 186 | ```shell 187 | sudo userdel -r jack 188 | ``` 189 | 190 | 9. OPTIONALLY disable password authentication and only allow pubkey authentication. This is recommended for most users but is considered optional because it is more advanced. 191 | 192 | Bring up `/etc/ssh/sshd_config` in your favorite editor and uncomment the line that has `PasswordAuthentication`. Change the value to `no` if it is not set as such. 193 | 194 | Once completed, run: 195 | 196 | ```shell 197 | sudo service ssh restart 198 | ``` 199 | 200 | 10. OPTIONALLY update your packages. 201 | 202 | Run: 203 | 204 | ```shell 205 | sudo apt-get update 206 | sudo apt-get upgrade 207 | ``` 208 | 209 | You may need to enter `y` to approve the updates. 210 | 211 | ## 4. Setup DC2 as a Docker Machine 212 | 213 | 1. Make sure you have the [Docker Toolbox](https://www.docker.com/products/docker-toolbox) intalled on your computer. 214 | 215 | 2. Find the IP address of your DC2: 216 | 217 | ```shell 218 | ping dc2.local 219 | ``` 220 | 221 | Substitute `a.b.c.d` in the following commands with your DC2's IP address 222 | 223 | 3. Check that you can use SSH against your IP address: 224 | 225 | ```shell 226 | ssh dc2@a.b.c.d 227 | ``` 228 | 229 | If you had previously used SSH against that IP address, your will likely get an error and you will need to update your `known_hosts` file. 230 | 231 | 4. Add your SSH key to your agent. 232 | 233 | ```shell 234 | ssh-add ~/.ssh/id_rsa 235 | ``` 236 | 237 | You will be prompted for your SSH key passphrase. You may need to change `~/.ssh/id_rsa` to the path of your key that you created. 238 | 239 | 5. OPTIONALLY create a separate user to run `docker`. This is a security measure. 240 | 241 | On the DC2, create a user and password for the user: 242 | 243 | ```shell 244 | sudo useradd -m dockeradmin 245 | sudo passwd dockeradmin 246 | sudo mkdir /home/dockeradmin/.ssh 247 | sudo chown dockeradmin:dockeradmin /home/dockeradmin/.ssh 248 | sudo chmod 700 /home/dockeradmin/.ssh 249 | ``` 250 | 251 | Back on your machine, create a SSH key and copy it to the DC2. Make sure *not* to enter a passphrase for this user, unlike your SSH key pair which most certainly should have a passphrase. 252 | 253 | ```shell 254 | ssh-keygen -b 4096 -f ~/.ssh/id_rsa.dc2.docker 255 | ``` 256 | 257 | With your favorite editor, create `/home/dockeradmin/.ssh/authrorized_keys` to contain the public half of the keypair (`~/.ssh/id_rsa.dc2.docker.pub`). And make sure to set the proper permissions: 258 | 259 | ```shell 260 | sudo chown dockeradmin:dockeradmin /home/dockeradmin/.ssh/authorized_keys 261 | sudo chmod 600 /home/dockeradmin/.ssh/authorized_keys 262 | ``` 263 | 264 | Give the ability to this user full `sudo` access: 265 | 266 | ```shell 267 | sudo visudo 268 | ``` 269 | 270 | Copy/paste the following towards the bottom after the `%sudo` definition: 271 | 272 | ```shell 273 | # Docker 274 | dockeradmin ALL=(ALL) NOPASSWD: ALL 275 | ``` 276 | 277 | If everything was done perfectly, you should now be able to SSH as this user to the DC2. 278 | 279 | ```shell 280 | ssh -o IdentityFile=~/.ssh/id_rsa.dc2.docker dockeradmin@a.b.c.d 281 | ``` 282 | 283 | 6. Setup the DC2 as a generic machine: 284 | 285 | ```shell 286 | docker-machine create --driver generic --generic-ssh-user=jack --generic-ip-address=a.b.c.d dc2 287 | ``` 288 | 289 | You may need to change the username if you created a separate one above. This command takes a while as it will be updating the DC2. It will create add your DC2 as a machine to run containers in. Sometimes `docker-machine` emits an error about certs. 290 | 291 | An example successful command and output might look like the following (with a couple more options): 292 | 293 | ```shell 294 | docker-machine create --driver generic --generic-ssh-user dockeradmin --generic-ssh-key ~/.ssh/id_rsa.dc2.docker --generic-ip-address 10.1.12.2 --generic-ssh-port 22 dc2 295 | ``` 296 | 297 | ``` 298 | Running pre-create checks... 299 | Creating machine... 300 | (dc2) Importing SSH key... 301 | Waiting for machine to be running, this may take a few minutes... 302 | Detecting operating system of created instance... 303 | Waiting for SSH to be available... 304 | Detecting the provisioner... 305 | Provisioning with ubuntu(upstart)... 306 | Installing Docker... 307 | Copying certs to the local machine directory... 308 | Copying certs to the remote machine... 309 | Setting Docker configuration on the remote daemon... 310 | Checking connection to Docker... 311 | Docker is up and running! 312 | To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env dc2 313 | ``` 314 | 315 | 7. Check the status of your DC2 docker machine: 316 | 317 | ```shell 318 | docker-machine status dc2 319 | ``` 320 | 321 | It should state `Running` at this point. 322 | 323 | 8. Setup the DC2 as your docker machine: 324 | 325 | To view the environment for your docker machine: 326 | 327 | ```shell 328 | docker-machine env dc2 329 | ``` 330 | 331 | It should output several lines. 332 | 333 | For assistance with this or any `docker` command you can always run `docker-machine help `. 334 | 335 | Where command can be `env` or any other `docker-machine` command. 336 | 337 | 9. Run the hello-world container: 338 | 339 | First, you need to setup your local environment by running the above `env` command. The output of that command at the end should have something like: 340 | 341 | ```shell 342 | # Run this command to configure your shell: 343 | # eval $(docker-machine env dc2) 344 | ``` 345 | 346 | Run the `eval ...` command. 347 | 348 | After that, run: 349 | 350 | ```shell 351 | docker run hello-world 352 | ``` 353 | 354 | You should see "Hello from Docker" along with various other output. You now have a functining Desktop Computer Container! 355 | 356 | 10. Shutting down your DC2. Make sure you properly shutdown your DC2 so that the file system does not get corrupted. If it does, you will need to connect a monitor and keyboard to fix the errors on boot. 357 | 358 | ```shell 359 | ssh jack@dc2.local 360 | sudo shutdown -h now 361 | ``` 362 | 363 | Success! Disconnect power, ethernet and HDMI (if connected) and finish assembly. 364 | 365 | ## 5. DC2 Assembly 366 | 367 | 1. Connect the MinnowBoard Turbot to the faceplate. 368 | 369 | 1. Get a #1 (or #2 if need be) philips head screwdriver and screw the 2 M3 philips screws each in a few turns. You want the screws to go in from the left side if you are looking at the front of the faceplate. We are doing this to loosen the threads as the faceplate threads are 3D printed. 370 | 371 | ![mounting screws](./images/mounting_screws.jpg) 372 | 373 | 2. Take out the screws, set the MinnowBoard Turbot on the faceplate, and screw the screws back in. Tighten enough that the MinnowBoard Turbot does not wobble around on the faceplate. If you have ordered a SilverJaw Lure, you can first mount it to the MinnowBoard Turbot placing the spacers between the two boards, then screw the screws into the faceplate, and then screw the screws into the standoff at the other end of the boards. 374 | 375 | ![mounting screws](./images/base_assembly.jpg) 376 | 377 | With SilverJaw 378 | 379 | ![mounting screws](./images/Silverjaw_Assembly.jpg) 380 | 381 | 2. Connnect the USB drive to the MinnowBoard if it is not connected. 382 | 383 | 3. If you have an OLED you need to connect it before installing the MinnowBoard Turbot into the container. 384 | 385 | 1. Just as we did with the screws for mounting the MinnowBoard, we need to clean out the threads for the OLED mount. Screw the M1.6 screws into the OLED mounting locations with the supplied allen wrench, and then take them back out. 386 | 387 | ![mounting screws](./images/OLED_screws.jpg) 388 | 389 | 2. Insert the memory card into the OLED. This image also shows how the cable will be connected. 390 | 391 | ![mounting screws](./images/OLED_assembly.jpg) 392 | 393 | 3. Mount the OLED with the 4 M1.6 hex head screws. 394 | 395 | ![mounting screws](./images/OLED_mounting.jpg) 396 | 397 | 4. Connect the cable from the USB 2.0 connector to the OLED. Make sure you connect per the image and then coil the cable as indicated. You can use the twist tie from the power supply to hold the OLED cable. 398 | 399 | ![mounting screws](./images/OLED_connection.jpg) 400 | 401 | Full Assembly 402 | 403 | ![mounting screws](./images/full_assembly.jpg) 404 | 405 | 5. NOTE: we are still working on software to drive the OLED. 406 | 407 | 4. Slide the assembled MinnoBoard and faceplate into the container. It should click a little when fully installed. 408 | 409 | 6. Reconnect ethernet and power and enjoy your DC2! 410 | 411 | ## 6. FAQ 412 | 413 | 1. **Question**: Something is not working? 414 | 415 | **Answer**: Check the FAQ below. If not answered, file an issue at https://github.com/hardtware/DC2/issues 416 | 417 | 2. **Question**: What is the CR1225 battery for? 418 | 419 | **Answer**: It is a spare battery. Your MinnowBoard Turbot should have a CR1225 battery in it already. 420 | 421 | 3. **Question**: I see `WRITE SAME failed. Manually zeroing.` on boot. What is happening? 422 | 423 | **Answer**: You don't need to worry about this and can ignore it. If you would like to make this message go away since it is unrelated to this hardware (it has to do with SCSI driver which is irrelevant for us), you can! Copy the following script to `/usr/local/sbin/disable-write-same`: 424 | 425 | ```shell 426 | #! /bin/sh 427 | # Disable SCSI WRITE_SAME, which is not supported by underlying disk 428 | # emulation. Run on boot from, eg, /etc/rc.local 429 | # 430 | # See http://www.it3.be/2013/10/16/write-same-failed/ 431 | # 432 | # Written by Ewen McNeill , 2014-07-17 433 | #--------------------------------------------------------------------------- 434 | 435 | find /sys/devices -name max_write_same_blocks | 436 | while read DISK; do 437 | echo 0 >"${DISK}" 438 | done 439 | ``` 440 | 441 | And then add a call on boot to this script before the `exit` in `/etc/rc.local`. 442 | 443 | On reboot you should no longer see this message. 444 | 445 | Source [link](http://ewen.mcneill.gen.nz/blog/entry/2014-07-17-mininet-on-ubuntu-14.04-in-kvm/). 446 | 447 | 4. **Question**: The machine did not boot. What happened? 448 | 449 | **Answer**: Sometimes something gets out of sync somewhere with the onboard memory and the drive and Ubuntu thinks something is corrupted and you have to tell it to continue. If you have a display attached you can see it. You can just hit `i` to ignore and everything will be fine. You might need to hit `i` a few times. If you don't have a monitor, try connecting a USB keyboard and hit `i` a few times. If you see the drive light flash, you should be booting. 450 | 451 | 5. **Question**: How do I remove the faceplate once I have assmebled it? 452 | 453 | **Answer**: To take out the faceplate and the board, put your fingers in the large hex holes, push the faceplate down towards the bottom of the container as the top of the faceplate hooks to the top inside of the container, then wiggle and pull to get it out. 454 | 455 | 6. **Question**: How can I stack up my containers? 456 | 457 | **Answer**: [remonlam](https://github.com/remonlam) has created an STL you can 3D print to stack up your containers [here](./stacker.md) 458 | -------------------------------------------------------------------------------- /assembly/README.md: -------------------------------------------------------------------------------- 1 | placeholder for assembly instructions 2 | -------------------------------------------------------------------------------- /images/OLED_assembly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/OLED_assembly.jpg -------------------------------------------------------------------------------- /images/OLED_connection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/OLED_connection.jpg -------------------------------------------------------------------------------- /images/OLED_mounting.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/OLED_mounting.jpg -------------------------------------------------------------------------------- /images/OLED_screws.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/OLED_screws.jpg -------------------------------------------------------------------------------- /images/Silverjaw_Assembly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/Silverjaw_Assembly.jpg -------------------------------------------------------------------------------- /images/base_assembly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/base_assembly.jpg -------------------------------------------------------------------------------- /images/dc2_stacker_1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/dc2_stacker_1.jpg -------------------------------------------------------------------------------- /images/dc2_stacker_2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/dc2_stacker_2.jpg -------------------------------------------------------------------------------- /images/dc2_stacker_3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/dc2_stacker_3.jpg -------------------------------------------------------------------------------- /images/dc2_stacker_4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/dc2_stacker_4.jpg -------------------------------------------------------------------------------- /images/full_assembly.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/full_assembly.jpg -------------------------------------------------------------------------------- /images/mounting_screws.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/mounting_screws.jpg -------------------------------------------------------------------------------- /images/test_setup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/images/test_setup.jpg -------------------------------------------------------------------------------- /sources/FaceplateV17.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/sources/FaceplateV17.stl -------------------------------------------------------------------------------- /sources/dc2_stacker.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/hardtware/DC2/adab14df06c08b616e26231a639b72014a629dd0/sources/dc2_stacker.stl -------------------------------------------------------------------------------- /stacker.md: -------------------------------------------------------------------------------- 1 | 2 | # DC2 Stacker 3 | 4 | ... thanks to [remonlam](https://github.com/remonlam) 5 | 6 | The Kickstarter backers that have bought the DC2 Data Center (a stack of 4 containers) might have a hard time to get them stacked. 7 | This is because there's no lock to get the containers nicely stacked. To make sure they keep "stacked" on top of each other I created a small frame called the "DC2 Stacker" :-) 8 | 9 | All you need to do is print (a 3D printer that is, not you're regular printer) the [STL file](./sources/dc2_stacker.stl) three (3x) times. One would be the base layer, and the two other layers should be glued together (with superglue) to form the mid section. 10 | 11 | The end result should look like this; 12 | 13 | #### Place the layer on top of the fist two containers 14 | ![Two layers glued together](./images/dc2_stacker_1.jpg) 15 | 16 | #### The next layer of containers should fit in nicely 17 | ![Build the stack](./images/dc2_stacker_2.jpg) 18 | 19 | #### The end result, now the containers won't fall off the stack 20 | ![End result 1](./images/dc2_stacker_3.jpg) 21 | ![End result 2](./images/dc2_stacker_4.jpg) 22 | 23 | #### STL file 24 | [DC2-Stacker STL file](./sources/dc2_stacker.stl) 25 | 26 | --------------------------------------------------------------------------------