76 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # VM setup - Create host directories and files
 | |
| 
 | |
| 
 | |
| ## Create directory with secrets
 | |
| For security reasons, sensitive info (such as tokens and passwords) are not hardcoded into the
 | |
| docker image, nor passed as environment variables at runtime. They are passed to the docker
 | |
| container from the host VM as files inside a directory. Each file's name is the name of the variable
 | |
| and the file content is the value. These are read from inside the running container when necessary.
 | |
| 
 | |
| More info on how to create `secrets` directory and files can be found
 | |
| [here](vm-setup--set-up-secrets.md).
 | |
| 
 | |
| 
 | |
| ## Create directory for build artifacts
 | |
| The uploaded build artifacts should be kept on a directory outside the docker container, so it is
 | |
| easier to replace the container without losing the uploaded builds. For portability across VMs a
 | |
| persistent disk can be used (as described [here](vm-setup--attach-persistent-disk.md)).
 | |
| 
 | |
| **Note:** The directories created inside that directory will be owned by user `www-data`.
 | |
| 
 | |
| 
 | |
| ## Create SSL certificates (Optional for dev)
 | |
| The host VM can attach a directory containing the SSL certificate and key to be used by the nginx
 | |
| server for serving the uploaded build artifacts. More info on how to attach the directory when
 | |
| starting the container can be found [here](vm-setup--start-docker-container.md).
 | |
| 
 | |
| In order for the container to be able to find the certificate and key, they should be named
 | |
| `<DOMAIN_NAME>.crt` and `<DOMAIN_NAME>.key` respectively. For example, for a domain name
 | |
| `ngbuild.io`, nginx will look for files `ngbuilds.io.crt` and `ngbuilds.io.key`. More info on how to
 | |
| specify the domain name see [here](vm-setup--create-docker-image.md).
 | |
| 
 | |
| If no directory is attached, nginx will use an internal self-signed certificate. This is convenient
 | |
| during development, but is not suitable for production.
 | |
| 
 | |
| **Note:**
 | |
| Since nginx needs to be able to serve requests for both the main domain as well as any subdomain
 | |
| (e.g. `ngbuilds.io/` and `foo-bar.ngbuilds.io/`), the provided certificate needs to be a wildcard
 | |
| certificate covering both the domain and subdomains.
 | |
| 
 | |
| 
 | |
| ## Create directory for logs (Optional)
 | |
| Optionally, a logs directory can pe passed to the docker container for storing non-system-related
 | |
| logs. If not provided, the logs are kept locally on the container and will be lost whenever the
 | |
| container is replaced (e.g. when updating to use a newer version of the docker image). Log files are
 | |
| rotated and retained for 6 months.
 | |
| 
 | |
| The following log files are kept in this directory:
 | |
| 
 | |
| - `clean-up.log`:
 | |
|   Output of the `aio-clean-up` command, run as a cronjob for cleaning up the build artifacts of
 | |
|   closed PRs.
 | |
| 
 | |
| - `init.log`:
 | |
|   Output of the `aio-init` command, run (by default) when starting the container.
 | |
| 
 | |
| - `nginx/{access,error}.log`:
 | |
|   The access and error logs produced by the nginx server while serving "production" files.
 | |
| 
 | |
| - `nginx-test/{access,error}.log`:
 | |
|   The access and error logs produced by the nginx server while serving "test" files. This is only
 | |
|   used when running tests locally from inside the container, e.g. with the `aio-verify-setup`
 | |
|   command. (See [here](overview--scripts-and-commands.md) for more info.)
 | |
| 
 | |
| - `upload-server-{prod,test,verify-setup}-*.log`:
 | |
|   The logs produced by the Node.js upload-server while serving either:
 | |
|   - `-prod`: "Production" files (g.g during normal operation).
 | |
|   - `-test`: "Test" files (e.g. when a test instance is started with the `aio-upload-server-test`
 | |
|              command).
 | |
|   - `-verify-setup`: "Test" files, but while running `aio-verify-setup`.
 | |
| 
 | |
|   (See [here](overview--scripts-and-commands.md) for more info the commands mentioned above.)
 | |
| 
 | |
| - `verify-setup.log`:
 | |
|   The output of the `aio-verify-setup` command (e.g. Jasmine output), except for upload-server
 | |
|   output which is logged to `upload-server-verify-setup-*.log` (see above).
 |