mirror of
https://github.com/mattermost/focalboard.git
synced 2025-04-14 11:28:37 +02:00
Product name
This commit is contained in:
parent
87f05911ae
commit
535e313718
14
README.md
14
README.md
@ -1,4 +1,10 @@
|
|||||||
# mattermost-octo-tasks
|
# Focalboard
|
||||||
|
|
||||||
|
Focalboard is an open source project management app for individuals and teams. It comes in two editions:
|
||||||
|
* **Personal Desktop**: A stand-alone desktop app for your todos and personal projects
|
||||||
|
* **Personal Server**: A self-hosted server for your team to collaborate
|
||||||
|
|
||||||
|
The same server binary powers both editions.
|
||||||
|
|
||||||
## Building the server
|
## Building the server
|
||||||
|
|
||||||
@ -34,17 +40,17 @@ You can build standalone apps that package the server to run locally against SQL
|
|||||||
|
|
||||||
* Mac:
|
* Mac:
|
||||||
* `make mac-app`
|
* `make mac-app`
|
||||||
* run `mac/dist/Tasks.app`
|
* run `mac/dist/Focalboard.app`
|
||||||
* *Requires: macOS Catalina (10.15), Xcode 12 and a development signing certificate.*
|
* *Requires: macOS Catalina (10.15), Xcode 12 and a development signing certificate.*
|
||||||
* Linux:
|
* Linux:
|
||||||
* Install webgtk dependencies
|
* Install webgtk dependencies
|
||||||
* `sudo apt-get install libgtk-3-dev`
|
* `sudo apt-get install libgtk-3-dev`
|
||||||
* `sudo apt-get install libwebkit2gtk-4.0-dev`
|
* `sudo apt-get install libwebkit2gtk-4.0-dev`
|
||||||
* `make linux-app`
|
* `make linux-app`
|
||||||
* run `linux/dist/tasks-app`
|
* run `linux/dist/focalboard-app`
|
||||||
* Windows
|
* Windows
|
||||||
* `make win-app`
|
* `make win-app`
|
||||||
* run `win/dist/tasks-win.exe`
|
* run `win/dist/focalboard.exe`
|
||||||
* *Requires: Windows 10*
|
* *Requires: Windows 10*
|
||||||
|
|
||||||
Cross-compilation currently isn't fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (build-mac.yml, build-win.yml, build-ubuntu.yml) for the detailed list of steps on each platform.
|
Cross-compilation currently isn't fully supported, so please build on the appropriate platform. Refer to the GitHub Actions workflows (build-mac.yml, build-win.yml, build-ubuntu.yml) for the detailed list of steps on each platform.
|
||||||
|
@ -11,8 +11,8 @@
|
|||||||
80D6DEBD252E13CB00AEED9E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DEBC252E13CB00AEED9E /* ViewController.swift */; };
|
80D6DEBD252E13CB00AEED9E /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DEBC252E13CB00AEED9E /* ViewController.swift */; };
|
||||||
80D6DEBF252E13CD00AEED9E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 80D6DEBE252E13CD00AEED9E /* Assets.xcassets */; };
|
80D6DEBF252E13CD00AEED9E /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 80D6DEBE252E13CD00AEED9E /* Assets.xcassets */; };
|
||||||
80D6DEC2252E13CD00AEED9E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 80D6DEC0252E13CD00AEED9E /* Main.storyboard */; };
|
80D6DEC2252E13CD00AEED9E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 80D6DEC0252E13CD00AEED9E /* Main.storyboard */; };
|
||||||
80D6DECE252E13CD00AEED9E /* TasksTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DECD252E13CD00AEED9E /* TasksTests.swift */; };
|
80D6DECE252E13CD00AEED9E /* FocalboardTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DECD252E13CD00AEED9E /* FocalboardTests.swift */; };
|
||||||
80D6DED9252E13CD00AEED9E /* TasksUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DED8252E13CD00AEED9E /* TasksUITests.swift */; };
|
80D6DED9252E13CD00AEED9E /* FocalboardUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DED8252E13CD00AEED9E /* FocalboardUITests.swift */; };
|
||||||
80D6DEEA252E15D100AEED9E /* resources in Resources */ = {isa = PBXBuildFile; fileRef = 80D6DEE9252E15D100AEED9E /* resources */; };
|
80D6DEEA252E15D100AEED9E /* resources in Resources */ = {isa = PBXBuildFile; fileRef = 80D6DEE9252E15D100AEED9E /* resources */; };
|
||||||
80D6DF18252F9BDE00AEED9E /* AutoSaveWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DF17252F9BDE00AEED9E /* AutoSaveWindowController.swift */; };
|
80D6DF18252F9BDE00AEED9E /* AutoSaveWindowController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80D6DF17252F9BDE00AEED9E /* AutoSaveWindowController.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
@ -23,14 +23,14 @@
|
|||||||
containerPortal = 80D6DEAF252E13CB00AEED9E /* Project object */;
|
containerPortal = 80D6DEAF252E13CB00AEED9E /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = 80D6DEB6252E13CB00AEED9E;
|
remoteGlobalIDString = 80D6DEB6252E13CB00AEED9E;
|
||||||
remoteInfo = Tasks;
|
remoteInfo = Focalboard;
|
||||||
};
|
};
|
||||||
80D6DED5252E13CD00AEED9E /* PBXContainerItemProxy */ = {
|
80D6DED5252E13CD00AEED9E /* PBXContainerItemProxy */ = {
|
||||||
isa = PBXContainerItemProxy;
|
isa = PBXContainerItemProxy;
|
||||||
containerPortal = 80D6DEAF252E13CB00AEED9E /* Project object */;
|
containerPortal = 80D6DEAF252E13CB00AEED9E /* Project object */;
|
||||||
proxyType = 1;
|
proxyType = 1;
|
||||||
remoteGlobalIDString = 80D6DEB6252E13CB00AEED9E;
|
remoteGlobalIDString = 80D6DEB6252E13CB00AEED9E;
|
||||||
remoteInfo = Tasks;
|
remoteInfo = Focalboard;
|
||||||
};
|
};
|
||||||
/* End PBXContainerItemProxy section */
|
/* End PBXContainerItemProxy section */
|
||||||
|
|
||||||
@ -41,12 +41,12 @@
|
|||||||
80D6DEBE252E13CD00AEED9E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
80D6DEBE252E13CD00AEED9E /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
80D6DEC1252E13CD00AEED9E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
80D6DEC1252E13CD00AEED9E /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
|
||||||
80D6DEC3252E13CD00AEED9E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
80D6DEC3252E13CD00AEED9E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
80D6DEC4252E13CD00AEED9E /* Tasks.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Tasks.entitlements; sourceTree = "<group>"; };
|
80D6DEC4252E13CD00AEED9E /* Focalboard.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Focalboard.entitlements; sourceTree = "<group>"; };
|
||||||
80D6DEC9252E13CD00AEED9E /* FocalboardTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FocalboardTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
80D6DEC9252E13CD00AEED9E /* FocalboardTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FocalboardTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
80D6DECD252E13CD00AEED9E /* TasksTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TasksTests.swift; sourceTree = "<group>"; };
|
80D6DECD252E13CD00AEED9E /* FocalboardTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocalboardTests.swift; sourceTree = "<group>"; };
|
||||||
80D6DECF252E13CD00AEED9E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
80D6DECF252E13CD00AEED9E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
80D6DED4252E13CD00AEED9E /* FocalboardUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FocalboardUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
80D6DED4252E13CD00AEED9E /* FocalboardUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FocalboardUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
80D6DED8252E13CD00AEED9E /* TasksUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TasksUITests.swift; sourceTree = "<group>"; };
|
80D6DED8252E13CD00AEED9E /* FocalboardUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FocalboardUITests.swift; sourceTree = "<group>"; };
|
||||||
80D6DEDA252E13CD00AEED9E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
80D6DEDA252E13CD00AEED9E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||||
80D6DEE9252E15D100AEED9E /* resources */ = {isa = PBXFileReference; lastKnownFileType = folder; path = resources; sourceTree = "<group>"; };
|
80D6DEE9252E15D100AEED9E /* resources */ = {isa = PBXFileReference; lastKnownFileType = folder; path = resources; sourceTree = "<group>"; };
|
||||||
80D6DF17252F9BDE00AEED9E /* AutoSaveWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoSaveWindowController.swift; sourceTree = "<group>"; };
|
80D6DF17252F9BDE00AEED9E /* AutoSaveWindowController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutoSaveWindowController.swift; sourceTree = "<group>"; };
|
||||||
@ -108,7 +108,7 @@
|
|||||||
80D6DEBE252E13CD00AEED9E /* Assets.xcassets */,
|
80D6DEBE252E13CD00AEED9E /* Assets.xcassets */,
|
||||||
80D6DEC0252E13CD00AEED9E /* Main.storyboard */,
|
80D6DEC0252E13CD00AEED9E /* Main.storyboard */,
|
||||||
80D6DEC3252E13CD00AEED9E /* Info.plist */,
|
80D6DEC3252E13CD00AEED9E /* Info.plist */,
|
||||||
80D6DEC4252E13CD00AEED9E /* Tasks.entitlements */,
|
80D6DEC4252E13CD00AEED9E /* Focalboard.entitlements */,
|
||||||
80D6DF1C25324A4F00AEED9E /* Inherit.entitlements */,
|
80D6DF1C25324A4F00AEED9E /* Inherit.entitlements */,
|
||||||
);
|
);
|
||||||
path = Focalboard;
|
path = Focalboard;
|
||||||
@ -117,7 +117,7 @@
|
|||||||
80D6DECC252E13CD00AEED9E /* FocalboardTests */ = {
|
80D6DECC252E13CD00AEED9E /* FocalboardTests */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
80D6DECD252E13CD00AEED9E /* TasksTests.swift */,
|
80D6DECD252E13CD00AEED9E /* FocalboardTests.swift */,
|
||||||
80D6DECF252E13CD00AEED9E /* Info.plist */,
|
80D6DECF252E13CD00AEED9E /* Info.plist */,
|
||||||
);
|
);
|
||||||
path = FocalboardTests;
|
path = FocalboardTests;
|
||||||
@ -126,7 +126,7 @@
|
|||||||
80D6DED7252E13CD00AEED9E /* FocalboardUITests */ = {
|
80D6DED7252E13CD00AEED9E /* FocalboardUITests */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
80D6DED8252E13CD00AEED9E /* TasksUITests.swift */,
|
80D6DED8252E13CD00AEED9E /* FocalboardUITests.swift */,
|
||||||
80D6DEDA252E13CD00AEED9E /* Info.plist */,
|
80D6DEDA252E13CD00AEED9E /* Info.plist */,
|
||||||
);
|
);
|
||||||
path = FocalboardUITests;
|
path = FocalboardUITests;
|
||||||
@ -149,7 +149,7 @@
|
|||||||
dependencies = (
|
dependencies = (
|
||||||
);
|
);
|
||||||
name = Focalboard;
|
name = Focalboard;
|
||||||
productName = Tasks;
|
productName = Focalboard;
|
||||||
productReference = 80D6DEB7252E13CB00AEED9E /* Focalboard.app */;
|
productReference = 80D6DEB7252E13CB00AEED9E /* Focalboard.app */;
|
||||||
productType = "com.apple.product-type.application";
|
productType = "com.apple.product-type.application";
|
||||||
};
|
};
|
||||||
@ -167,7 +167,7 @@
|
|||||||
80D6DECB252E13CD00AEED9E /* PBXTargetDependency */,
|
80D6DECB252E13CD00AEED9E /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = FocalboardTests;
|
name = FocalboardTests;
|
||||||
productName = TasksTests;
|
productName = FocalboardTests;
|
||||||
productReference = 80D6DEC9252E13CD00AEED9E /* FocalboardTests.xctest */;
|
productReference = 80D6DEC9252E13CD00AEED9E /* FocalboardTests.xctest */;
|
||||||
productType = "com.apple.product-type.bundle.unit-test";
|
productType = "com.apple.product-type.bundle.unit-test";
|
||||||
};
|
};
|
||||||
@ -185,7 +185,7 @@
|
|||||||
80D6DED6252E13CD00AEED9E /* PBXTargetDependency */,
|
80D6DED6252E13CD00AEED9E /* PBXTargetDependency */,
|
||||||
);
|
);
|
||||||
name = FocalboardUITests;
|
name = FocalboardUITests;
|
||||||
productName = TasksUITests;
|
productName = FocalboardUITests;
|
||||||
productReference = 80D6DED4252E13CD00AEED9E /* FocalboardUITests.xctest */;
|
productReference = 80D6DED4252E13CD00AEED9E /* FocalboardUITests.xctest */;
|
||||||
productType = "com.apple.product-type.bundle.ui-testing";
|
productType = "com.apple.product-type.bundle.ui-testing";
|
||||||
};
|
};
|
||||||
@ -293,7 +293,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
80D6DECE252E13CD00AEED9E /* TasksTests.swift in Sources */,
|
80D6DECE252E13CD00AEED9E /* FocalboardTests.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -301,7 +301,7 @@
|
|||||||
isa = PBXSourcesBuildPhase;
|
isa = PBXSourcesBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
80D6DED9252E13CD00AEED9E /* TasksUITests.swift in Sources */,
|
80D6DED9252E13CD00AEED9E /* FocalboardUITests.swift in Sources */,
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -499,14 +499,14 @@
|
|||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
INFOPLIST_FILE = TasksTests/Info.plist;
|
INFOPLIST_FILE = FocalboardTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/../Frameworks",
|
"@loader_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.TasksTests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.FocalboardTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Focalboard.app/Contents/MacOS/Focalboard";
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Focalboard.app/Contents/MacOS/Focalboard";
|
||||||
@ -521,14 +521,14 @@
|
|||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
INFOPLIST_FILE = TasksTests/Info.plist;
|
INFOPLIST_FILE = FocalboardTests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/../Frameworks",
|
"@loader_path/../Frameworks",
|
||||||
);
|
);
|
||||||
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
MACOSX_DEPLOYMENT_TARGET = 10.15;
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.TasksTests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.FocalboardTests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Focalboard.app/Contents/MacOS/Focalboard";
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Focalboard.app/Contents/MacOS/Focalboard";
|
||||||
@ -542,16 +542,16 @@
|
|||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
INFOPLIST_FILE = TasksUITests/Info.plist;
|
INFOPLIST_FILE = FocalboardUITests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/../Frameworks",
|
"@loader_path/../Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.TasksUITests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.FocalboardUITests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_TARGET_NAME = Tasks;
|
TEST_TARGET_NAME = Focalboard;
|
||||||
};
|
};
|
||||||
name = Debug;
|
name = Debug;
|
||||||
};
|
};
|
||||||
@ -562,16 +562,16 @@
|
|||||||
CODE_SIGN_STYLE = Manual;
|
CODE_SIGN_STYLE = Manual;
|
||||||
COMBINE_HIDPI_IMAGES = YES;
|
COMBINE_HIDPI_IMAGES = YES;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
INFOPLIST_FILE = TasksUITests/Info.plist;
|
INFOPLIST_FILE = FocalboardUITests/Info.plist;
|
||||||
LD_RUNPATH_SEARCH_PATHS = (
|
LD_RUNPATH_SEARCH_PATHS = (
|
||||||
"$(inherited)",
|
"$(inherited)",
|
||||||
"@executable_path/../Frameworks",
|
"@executable_path/../Frameworks",
|
||||||
"@loader_path/../Frameworks",
|
"@loader_path/../Frameworks",
|
||||||
);
|
);
|
||||||
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.TasksUITests;
|
PRODUCT_BUNDLE_IDENTIFIER = com.mattermost.FocalboardUITests;
|
||||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||||
SWIFT_VERSION = 5.0;
|
SWIFT_VERSION = 5.0;
|
||||||
TEST_TARGET_NAME = Tasks;
|
TEST_TARGET_NAME = Focalboard;
|
||||||
};
|
};
|
||||||
name = Release;
|
name = Release;
|
||||||
};
|
};
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
// See LICENSE.txt for license information.
|
// See LICENSE.txt for license information.
|
||||||
|
|
||||||
import XCTest
|
import XCTest
|
||||||
@testable import Tasks
|
@testable import Focalboard
|
||||||
|
|
||||||
class TasksTests: XCTestCase {
|
class FocalboardTests: XCTestCase {
|
||||||
|
|
||||||
override func setUpWithError() throws {
|
override func setUpWithError() throws {
|
||||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
import XCTest
|
import XCTest
|
||||||
|
|
||||||
class TasksUITests: XCTestCase {
|
class FocalboardUITests: XCTestCase {
|
||||||
|
|
||||||
override func setUpWithError() throws {
|
override func setUpWithError() throws {
|
||||||
// Put setup code here. This method is called before the invocation of each test method in the class.
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
@ -17,11 +17,11 @@ Popular hosted options include:
|
|||||||
|
|
||||||
## Install Focalboard
|
## Install Focalboard
|
||||||
|
|
||||||
[Download the Ubuntu archive package here](/download), then unpack it to /opt/octo:
|
[Download the Ubuntu archive package here](/download), then unpack it to /opt/focalboard:
|
||||||
|
|
||||||
```
|
```
|
||||||
tar -xvzf octo-linux-amd64.tar.gz
|
tar -xvzf focalboard-server-linux-amd64.tar.gz
|
||||||
sudo mv octo /opt
|
sudo mv focalboard /opt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Install NGINX
|
## Install NGINX
|
||||||
@ -41,12 +41,12 @@ You may need to adjust your firewall settings depending on the host, e.g.
|
|||||||
|
|
||||||
Create a new site config:
|
Create a new site config:
|
||||||
```
|
```
|
||||||
sudo nano /etc/nginx/sites-available/tasks
|
sudo nano /etc/nginx/sites-available/focalboard
|
||||||
```
|
```
|
||||||
|
|
||||||
Copy and paste this configuration:
|
Copy and paste this configuration:
|
||||||
```
|
```
|
||||||
upstream tasks {
|
upstream focalboard {
|
||||||
server localhost:8000;
|
server localhost:8000;
|
||||||
keepalive 32;
|
keepalive 32;
|
||||||
}
|
}
|
||||||
@ -54,7 +54,7 @@ upstream tasks {
|
|||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
|
|
||||||
server_name tasks.example.com;
|
server_name focalboard.example.com;
|
||||||
|
|
||||||
location ~ /ws/* {
|
location ~ /ws/* {
|
||||||
proxy_set_header Upgrade $http_upgrade;
|
proxy_set_header Upgrade $http_upgrade;
|
||||||
@ -73,7 +73,7 @@ server {
|
|||||||
proxy_connect_timeout 1d;
|
proxy_connect_timeout 1d;
|
||||||
proxy_send_timeout 1d;
|
proxy_send_timeout 1d;
|
||||||
proxy_read_timeout 1d;
|
proxy_read_timeout 1d;
|
||||||
proxy_pass http://tasks;
|
proxy_pass http://focalboard;
|
||||||
}
|
}
|
||||||
|
|
||||||
location / {
|
location / {
|
||||||
@ -92,11 +92,18 @@ server {
|
|||||||
proxy_cache_use_stale timeout;
|
proxy_cache_use_stale timeout;
|
||||||
proxy_cache_lock on;
|
proxy_cache_lock on;
|
||||||
proxy_http_version 1.1;
|
proxy_http_version 1.1;
|
||||||
proxy_pass http://tasks;
|
proxy_pass http://focalboard;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Enable the site, test the config, and reload NGINX:
|
||||||
|
```
|
||||||
|
sudo ln -s /etc/nginx/sites-enabled/focalboard /etc/nginx/sites-available/focalboard
|
||||||
|
sudo nginx -t
|
||||||
|
sudo /etc/init.d/nginx reload
|
||||||
|
```
|
||||||
|
|
||||||
## Set up TLS on NGINX
|
## Set up TLS on NGINX
|
||||||
|
|
||||||
For a production server, it's important to set up TLS to encrypt web traffic. Without this, your login passwords and data are unprotected. Refer to the [NGINX TLS guide](https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/) and [Let's Encrypt guide](https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx) on setting this up.
|
For a production server, it's important to set up TLS to encrypt web traffic. Without this, your login passwords and data are unprotected. Refer to the [NGINX TLS guide](https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/) and [Let's Encrypt guide](https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx) on setting this up.
|
||||||
@ -117,8 +124,8 @@ psql
|
|||||||
|
|
||||||
On the psql prompt, run the following commands (**change the user/password** to your own values):
|
On the psql prompt, run the following commands (**change the user/password** to your own values):
|
||||||
<pre>
|
<pre>
|
||||||
CREATE DATABASE tasks;
|
CREATE DATABASE boards;
|
||||||
CREATE USER <b>tasksuser</b> WITH PASSWORD '<b>tasksuser-password</b>';
|
CREATE USER <b>boardsuser</b> WITH PASSWORD '<b>boardsuser-password</b>';
|
||||||
\q
|
\q
|
||||||
</pre>
|
</pre>
|
||||||
|
|
||||||
@ -130,12 +137,12 @@ exit
|
|||||||
Edit the Focalboard config.json:
|
Edit the Focalboard config.json:
|
||||||
|
|
||||||
```
|
```
|
||||||
nano /opt/octo/config.json
|
nano /opt/focalboard/config.json
|
||||||
```
|
```
|
||||||
|
|
||||||
Change the dbconfig setting to use the postgres database you created:
|
Change the dbconfig setting to use the postgres database you created:
|
||||||
```
|
```
|
||||||
"dbconfig": "postgres://tasksuser:tasksuser-password@localhost/octo?sslmode=disable&connect_timeout=10",
|
"dbconfig": "postgres://boardsuser:boardsuser-password@localhost/boards?sslmode=disable&connect_timeout=10",
|
||||||
```
|
```
|
||||||
|
|
||||||
## Configure Focalboard to run as a service
|
## Configure Focalboard to run as a service
|
||||||
@ -155,8 +162,8 @@ Description=Focalboard server
|
|||||||
Type=simple
|
Type=simple
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=5s
|
RestartSec=5s
|
||||||
ExecStart=/opt/octo/bin/octoserver
|
ExecStart=/opt/focalboard/bin/octoserver
|
||||||
WorkingDirectory=/opt/octo
|
WorkingDirectory=/opt/focalboard
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
@ -14,7 +14,7 @@ Personal Server settings are stored in `config.json` and is read when the server
|
|||||||
| serverRoot | Root URL of the server | "http://localhost:8000"
|
| serverRoot | Root URL of the server | "http://localhost:8000"
|
||||||
| port | Server port | 8000
|
| port | Server port | 8000
|
||||||
| dbtype | Type of database. `sqlite3` or `postgres` | "sqlite3"
|
| dbtype | Type of database. `sqlite3` or `postgres` | "sqlite3"
|
||||||
| dbconfig | Database connection string | postgres://user:pass@localhost/tasks?sslmode=disable&connect_timeout=10
|
| dbconfig | Database connection string | postgres://user:pass@localhost/boards?sslmode=disable&connect_timeout=10
|
||||||
| webpath | Path to web files | "./webapp/pack"
|
| webpath | Path to web files | "./webapp/pack"
|
||||||
| filespath | Path to uploaded files folder | "./files"
|
| filespath | Path to uploaded files folder | "./files"
|
||||||
| telemetry | Enable health diagnostics telemetry | true
|
| telemetry | Enable health diagnostics telemetry | true
|
||||||
|
Loading…
x
Reference in New Issue
Block a user