2019-02-09 12:30:49 +00:00
# Stash
2019-02-10 17:33:18 +00:00
[![Build Status ](https://travis-ci.org/stashapp/stash.svg?branch=master )](https://travis-ci.org/stashapp/stash)
2019-02-15 00:31:48 +00:00
[![Go Report Card ](https://goreportcard.com/badge/github.com/stashapp/stash )](https://goreportcard.com/report/github.com/stashapp/stash)
2019-03-24 00:13:55 +00:00
[![Discord ](https://img.shields.io/discord/559159668438728723.svg?logo=discord )](https://discord.gg/2TsNFKt)
2019-02-10 17:33:18 +00:00
2019-02-11 06:39:21 +00:00
**Stash is a Go app which organizes and serves your porn.**
2019-02-09 12:30:49 +00:00
See a demo [here ](https://vimeo.com/275537038 ) (password is stashapp).
2019-02-11 10:49:39 +00:00
# Install
2019-02-09 12:30:49 +00:00
2019-02-11 10:49:39 +00:00
Stash supports macOS, Windows, and Linux. Download the [latest release here ](https://github.com/stashapp/stash/releases ).
2019-02-10 02:01:00 +00:00
2019-02-15 15:55:51 +00:00
Simply run the executable (double click the exe on windows or run `./stash-osx` / `./stash-linux` from the terminal on macOS / Linux) and navigate to either https://localhost:9999 or http://localhost:9998 to get started.
2019-02-10 02:01:00 +00:00
2019-02-11 10:49:39 +00:00
*Note for Windows users:* Running the app might present a security prompt since the binary isn't signed yet. Just click more info and then the run anyway button.
2019-02-10 02:01:00 +00:00
2019-02-11 06:39:21 +00:00
#### FFMPEG
If stash is unable to find or download FFMPEG then download it yourself from the link for your platform:
* [macOS ](https://ffmpeg.zeranoe.com/builds/macos64/static/ffmpeg-4.0-macos64-static.zip )
* [Windows ](https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-4.0-win64-static.zip )
* [Linux ](https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz )
The `ffmpeg(.exe)` and `ffprobe(.exe)` files should be placed in `~/.stash` on macOS / Linux or `C:\Users\YourUsername\.stash` on Windows.
2019-02-11 10:49:39 +00:00
# FAQ
2019-03-24 00:13:55 +00:00
> I have a question not answered here.
Join the [Discord server ](https://discord.gg/2TsNFKt ).
2019-02-09 12:30:49 +00:00
2019-02-10 01:07:39 +00:00
# Development
2019-02-09 12:30:49 +00:00
2019-02-14 22:53:32 +00:00
## Install
* [Revive ](https://github.com/mgechev/revive ) - Configurable linter `go get github.com/mgechev/revive`
2019-03-23 22:40:23 +00:00
* [Yarn ](https://yarnpkg.com/en/docs/install ) - Yarn package manager
2019-02-14 22:53:32 +00:00
2019-02-10 01:07:39 +00:00
## Environment
### macOS
TODO
### Windows
1. Download and install [Go for Windows ](https://golang.org/dl/ )
2. Download and install [MingW ](https://sourceforge.net/projects/mingw-w64/ )
3. Search for "advanced system settings" and open the system properties dialog.
1. Click the `Environment Variables` button
2. Add `GO111MODULE=on`
3. Under system variables find the `Path` . Edit and add `C:\Program Files\mingw-w64\*\mingw64\bin` (replace * with the correct path).
## Commands
2019-02-09 12:30:49 +00:00
* `make build` - Builds the binary
* `make gqlgen` - Regenerate Go GraphQL files
2019-02-14 22:53:32 +00:00
* `make vet` - Run `go vet`
* `make lint` - Run the linter
2019-02-09 12:30:49 +00:00
2019-02-10 01:07:39 +00:00
## Building a release
2019-02-09 12:30:49 +00:00
2019-03-23 22:40:23 +00:00
1. cd into the `ui/v2` directory and run `yarn build` to compile the frontend
2019-02-14 22:53:32 +00:00
2. cd back to the root directory and run `make build` to build the executable for your current platform
2019-02-09 12:30:49 +00:00
2019-02-14 22:53:32 +00:00
## Cross compiling
2019-02-09 12:30:49 +00:00
2019-03-23 21:09:05 +00:00
This project uses a modification of [this ](https://github.com/bep/dockerfiles/tree/master/ci-goreleaser ) docker container to create an environment
2019-02-14 22:53:32 +00:00
where the app can be cross compiled. This process is kicked off by CI via the `scripts/cross-compile.sh` script. Run the following
command to open a bash shell to the container to poke around:
2019-02-10 12:16:29 +00:00
2019-03-23 22:40:23 +00:00
`docker run --rm --mount type=bind,source="$(pwd)",target=/stash -w /stash -i -t stashappdev/compiler:latest /bin/bash`